SQLServer存储过程返回值总结.
- 格式:doc
- 大小:17.50 KB
- 文档页数:6
SQLServer 存储过程返回值总结
1. 存储过程没有返回值的情况 (即存储过程语句中没有 return 之类的语句用方法 int count = ExecuteNonQuery(..执行存储过程其返回值只有两种情况
(1假如通过查询分析器执行该存储过程,在显示栏中假如有影响的行数,则影响几行 count 就是几
(2假如通过查询分析器执行该存储过程, 在显示栏中假如显示 ' 命令已成功完成。 ' 则 count = -1;在显示栏中假如有查询结果,则 count = -1
总结:A.ExecuteNonQuery(该方法只返回影响的行数,假如没有影响行数,则该方法的返回值只能是 -1,不会为 0。
B.不论 ExecuteNonQuery(方法是按照
CommandType.StoredProcedure 或者 CommandType.Text 执行, 其效果和 A 一样。 ---------------------------------------------------------------------------------------------------------------------------------------------------
2. 获得存储过程的返回值 --通过查询分析器获得
(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
总结:
(1存储过程共分为 3类:
A. 返回记录集的存储过程 ---------------------------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录
B. 返回数值的存储过程 (也可以称为标量存储过程 -----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令
C. 行为存储过程 -----------------------------------用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作
(2含有 return 的存储过程其返回值为 return 返回的那个值
(3没有 return 的存储过程,不论执行结果有无记录集,其返回值是 0