OUTPUT是输出参数吧,而且还可以向存储过程传入值,请举个例子讲解一下输入值的情况。
特别是MSDN上讲的“传址调用功能”,看不懂

解决方案 »

  1.   

    CREATE PROC GET_NAME(@ID INT,@NAME VARCHAR(30) OUTPUT)
    AS
    SELECT @NAME=NAME FROM LOGIN WHERE ID=@ID
    GODECLARE @NAME VARCHAR(30),@ID INT
    SET @ID=1EXEC GET_NAME @ID,@NAME OUTPUT
    SELECT @NAME
    楼主自己试试才是真道理。
      

  2.   

    你这个例子是传出值把,我看得懂,我想看看为output参数传入值的情况。谢谢
      

  3.   

    很敬佩楼主的学习钻研精神
    --无output测试
    create proc test(@galen varchar(20) output)
    as
    set @galen=@galen+'galenkeny'
    go
    declare @keny varchar(100) 
    set @keny='test';
    exec test @keny 
    select @keny 
    -->结果集
    ---------------------------------
    /*
    test
    */-- drop procedure test-->有output测试
    create proc test(@galen varchar(20) output)
    as
    set @galen=@galen+'galenkeny'
    go
    declare @keny varchar(100) 
    set @keny='test';
    exec test @keny output
    select @keny -->结果集
    ---------------------------------
    /*
    testgalenkeny
    */
      

  4.   

    我的回复又被吃了再发一遍,很敬佩楼主的学习钻研精神-->测试过程
    create proc test(@galen varchar(20) output)
    as
    set @galen=@galen+'galenkeny'
    go
    declare @keny varchar(100) 
    set @keny='test';
    exec test @keny 
    select @keny -->结果集
    --------------------------------------------------
    /*
    test
    */-->测试过程
    create proc test(@galen varchar(20) output)
    as
    set @galen=@galen+'galenkeny'
    go
    declare @keny varchar(100) 
    set @keny='test';
    exec test @keny output --此处会请求传入@galen实参值
    select @keny -->结果集
    --------------------------------------------------
    /*
    testgalenkeny
    */
      

  5.   

    搞不明白,LZ为什么要把output参数当输入参数用,感觉没必要,虽然可以这样做。下面是一个例子CREATE PROC testProc(@ID INT,@NAME VARCHAR(30) OUTPUT)
    AS
    BEGIN
    SELECT @NAME --这句可以查看传入的参数值
    ;WITH t as
    (
    select 1 id,'Jason Lin' fullname
    union all
    select 2,'Kira Dong'
    union all
    select 3,'Lisa Qiu'
    )
    SELECT @NAME=fullname FROM t WHERE id=@ID --这句是给ouutput参数赋值,以便回传给调用方
    END
    GODECLARE @NAME VARCHAR(30),@ID INT
    SET @ID=1
    SET @NAME='xiaobai' --把output参数当普通输入参数使用,给其赋值
    EXEC testProc @ID,@NAME OUTPUT
    SELECT @NAME --这句是执行完存储后,存储回传的值。