• SQL SERVER 获取存储过程返回值的几种方法


    --(1)不带任何参数的存储过程(存储过程语句中含有return)
    
    --创建存储过程
    CREATE PROCEDURE testReturn
    AS
    return 145
    GO
    --执行存储过程
    DECLARE @RC int
    exec @RC=testReturn
    select @RC
    --说明
    --查询结果为145
    --(2)带输入参数的存储过程(存储过程语句中含有return)
    --创建存储过程
    create procedure sp_add_table1
    @in_name varchar(100),
    @in_addr varchar(100),
    @in_tel varchar(100)
    as
    if(@in_name ='' or @in_name is null)
    return 1
    else
    begin
    insert into #table1(name,addr,tel) values(@in_name,@in_addr,@in_tel)
    return 0
    end
    --执行存储过程
    --<1>执行下列,返回1
    declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
    --<2>执行下列,返回0
    declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count
    --说明
    --查询结果不是0就是1
    --(3)带输出参数的存储过程(存储过程中可以有return可以没有return)
    
    --例子A:
    --创建存储过程
    create procedure sp_output
    @output int output
    as
    set @output = 121
    return 1
    --执行存储过程
    --<1>执行下列,返回121
    declare @out int
    exec sp_output @out output
    select @out
    --<2>执行下列,返回1
    declare @out int
    declare @count int
    exec @count = sp_output @out output
    select @count
    --说明
    --有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为return返回的值
    
    --例子B:
    --创建存储过程
    create procedure sp_output
    @output int output
    as
    set @output = 121
    --执行存储过程
    --<1>执行下列,返回121
    declare @out int
    exec sp_output @out output
    select @out
    --<2>执行下列,返回0
    declare @out int
    declare @count int
    exec @count = sp_output @out output
    select @count
    --说明
    --没有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为0
    --3.Select数据集返回值
    CREATE PROCEDURE [dbo].[upInformation](
    @id int
    )
    AS
    BEGIN
    SET NOCOUNT ON;
    SELECT id,age FROM [Information]
    WHERE id = @id
    GO
    
    --存储过程中获得方法:(使用临时表)
    CREATE TABLE [dbo].[Temp](
    [id] [bigint] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
    [age] [int] NOT NULL
    )
    INSERT [Temp] EXEC [nb_order_select] @id
    – 这时 Temp 就是EXEC执行SELECT 后的结果集
    SELECT * FROM [Temp]
    DROP [Temp] — 删除临时表
  • 相关阅读:
    [CF724G]Xor-matic Number of the Graph
    [SOJ #537]不包含 [CF102129I]Incomparable Pairs(2019-8-6考试)
    [SOJ #538]好数 [CC]FAVNUM(2019-8-6考试)
    [洛谷P4052][JSOI2007]文本生成器
    [洛谷P3966][TJOI2013]单词
    [洛谷P5158]【模板】多项式快速插值
    [洛谷P3227][HNOI2013]切糕
    【bzoj】3477: [Usaco2014 Mar]Sabotage 01分数规划
    【SPOJ
    【以前的空间】系列
  • 原文地址:https://www.cnblogs.com/Bokeyan/p/14073429.html
Copyright © 2020-2023  润新知