--(一)、参数返回值@parm2;declare @re varchar(30)
exec proc1 1,@re out
select 返回结果=@re

解决方案 »

  1.   

    --(二)、过程返回值return 100;
    declare @re int,@parm2 varchar(30)
    exec @re=proc1 1,@parm2 out
    select 返回结果=@re
      

  2.   


    --(三)、数据集返回值select * from table1 where age = @parm1
    --请问,如何得到三类返回值?--定义返回结果保存的临时表(因为是返回记录集,所以要用临时表)
    create table #re(
    name varchar(30),
    age integer,
    primary key(name, age)
    )--调用返回结果
    declare @re varchar(30)
    insert #re exec proc1 1,@re out--显示结果
    select * from #re--处理完成后删除临时表
    drop table #re
      

  3.   

    declare @re1 varchar(30)
    declare @re2 int
    select @re1='',@re2=''1. exec proc1 @re1 output2. exec @re2=proc1 @re1 output3.如果只有一个select语句的话,可以这样返回
    select * into #tmp from OPENROWSET('MSDASQL',
       'DRIVER={SQL Server};SERVER=poka;UID=sa;PWD=','declare @re3 varchar(30) exec YourDB.dbo.proc1 @re3 ')
      

  4.   

    用传游标参数的方法,在存储过程里定义并打开游标,
    如果 LOCAL和 GLOBAL 都没有指定,则数据库选项default to local cursor 控制由 DECLARE CURSOR 语句使用的默认值。如果 default to local cursor 为 true,Transact-SQL 游标默认为是局部的。如果此选项为 false,Transact-SQL 游标默认为是全局游标。在 SQL Server 2000版中,default to local cursors 选项默认为 FALSE,以便与 SQL Server 早期版本中的内容匹配。使用 DECLARE 和 OPEN 局部游标的存储过程可以将游标传递出去以供要求调用的存储过程、触发器或批处理使用。这可以通过使用由新的 CURSOR VARYING 数据类型定义的 OUTPUT 参数来实现。游标变量只能用作 OUTPUT 参数。不能将它们用于输入参数。当存储过程完成时游标必须是打开的,以便将游标返回 OUTPUT 参数。也可以通过新的 CURSOR 数据类型来声明局部变量以包含对局部游标的引用。USE pubs
    GO
    /* Create a procedure with a cursor output parameter. */
    CREATE PROCEDURE OpenCrsr @OutCrsr CURSOR VARYING OUTPUT ASSET @OutCrsr = CURSOR FOR
    SELECT au_lname
    FROM authors
    WHERE au_lname LIKE 'S%'OPEN @OutCrsr
    GO/* Allocate a cursor variable. */
    DECLARE @CrsrVar CURSOR/* Execute the procedure created earlier to fill
       the variable. */
    EXEC OpenCrsr @OutCrsr = @CrsrVar OUTPUT/* Use the variable to fetch the rows from the cursor. */
    FETCH NEXT FROM @CrsrVar
    WHILE (@@FETCH_STATUS <> -1)
    BEGIN
       FETCH NEXT FROM @CrsrVar
    ENDCLOSE @CrsrVarDEALLOCATE @CrsrVar
    GO数据库 API 不支持存储过程中的游标输出参数。不能直接从数据库 API 函数执行包含游标输出参数的存储过程。而只能从另一个存储过程、触发器、Transact-SQL 批处理或脚本执行这些存储过程。只有在明确释放时或关闭连接时 GLOBAL 游标才可用。创建 LOCAL 游标的存储过程、触发器或批处理终止时将隐性释放 LOCAL 游标,除非游标已作为参数返回。当调用过程的代码中引用游标的参数或变量超出作用域时,将隐性地释放 LOCAL 游标。