本帖最后由 plglenn34 于 2010-07-16 07:48:12 编辑

解决方案 »

  1.   


    exec CreateHuman ( @name='abc' , @body=@tempBody output )改为declare
      

  2.   

    --> 生成测试数据表: [tb]
    IF OBJECT_ID('tb')>0
    DROP TABLE tb
    GO
    CREATE TABLE [tb] ([name] [nvarchar](10),[body] [varbinary](max))
    INSERT INTO [tb]
    SELECT 'abc',0xabcdef0987654321 UNION ALL
    SELECT 'cdb',0x89876748598599ab--SELECT * FROM [tb]-->SQL查询如下:
    IF OBJECT_ID('CreateHuman')>0
    DROP PROC CreateHuman
    GO
    CREATE PROCEDURE CreateHuman
    @name NVARCHAR(20), 
    @body VARBINARY(MAX) OUTPUT
    AS
    SELECT @body=body FROM tb WHERE name = @name
    GO
    DECLARE @tempBody VARBINARY(MAX) 
    EXEC CreateHuman @name='abc', @body=@tempBody OUTPUT 
    SELECT @tempBody
    /*
    * ---------------------------
    * 0xABCDEF0987654321*(1 行受影响)
    */SQL2K5 use VARBINARY(MAX)
      

  3.   

    EXEC CreateHuman 'abc', @tempBody OUTPUT 这个不是更简洁么?
      

  4.   

    本帖最后由 htl258 于 2010-07-16 08:29:59 编辑