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] — 删除临时表
  • 相关阅读:
    exports 和 module.exports 的区别
    (转) 前端模块化:CommonJS,AMD,CMD,ES6
    使用原生的javascript来实现轮播图
    使用C3的一些新属性绘制谷歌浏览器的图标
    仿照jQuery进行一些简单的框架封装(欢迎指教~)
    canvas中的非零环绕原则
    利用canvas进行一个饼形图的绘制
    利用构造函数对canvas里面矩形与扇形的绘制进行一个封装
    利用canvas来绘制一个会动的图画,欢迎指教
    自己整理出来的一些用到的方法的封装,欢迎指教
  • 原文地址:https://www.cnblogs.com/Bokeyan/p/14073429.html
Copyright © 2011-2022 走看看