zoukankan      html  css  js  c++  java
  • 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] — 删除临时表
  • 相关阅读:
    FJUT3565 最大公约数之和(容斥)题解
    FJUT3568 中二病也要敲代码(线段树维护区间连续最值)题解
    BZOJ 2252 矩阵距离
    BZOJ 1047 理想的正方形
    BZOJ 1486 最小圈
    BZOJ 2083 Intelligence test
    BZOJ 1045 糖果传递
    BZOJ 3450 Easy
    BZOJ 4318 OSU!
    BZOJ 1954 The xor-longest Path
  • 原文地址:https://www.cnblogs.com/Bokeyan/p/14073429.html
Copyright © 2011-2022 走看看