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] — 删除临时表

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM