SQLServer存储过程返回值总结.

  • 格式:doc
  • 大小:17.50 KB
  • 文档页数:6

下载文档原格式

  / 9
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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