SQLServer存储过程的返回值.doc_第1页
SQLServer存储过程的返回值.doc_第2页
SQLServer存储过程的返回值.doc_第3页
SQLServer存储过程的返回值.doc_第4页
SQLServer存储过程的返回值.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SQLServer存储过程的返回值一、先说下ExecuteScalar()与ExecuteNonQuery ()ExecuteScalar方法返回的类型是object类型,这个方法返回sql语句执行后的第一行第一列的值,由于不知道sql语句到底是什么样的结构(有可能是int,有可能是char等等),所以ExecuteScalar方法返回一个最基本的类型object,这个类型是所有类型的基类,换句话说:可以转换为任意类型。ExecuteNonQuery来执行目录操作(例如查询数据库的结构或创建诸如表等的数据库对象),或通过执行 UPDATE、INSERT 或 DELETE 语句,在不使用 DataSet 的情况下更改数据库中的数据。由于UPDATE、INSERT 或 DELETE 这些语句执行后只有一个结果:“影响了*行”,所以此时ExecuteNonQuery方法返回的是影响的行数(int)。对于所有其他类型的语句,返回值为 -1。如果发生回滚,返回值也为 -1。ExecuteReader方法返回DataReader对象的时候,DataReader对象取出的列值要进行类型转换,例如:txtName.Text=(string)dataReadername,虽然SQL中列的name本身就是字符串类型,但是通过dataReadername这种方式访问这个字段,必须强制类型转换,因为dataReadername就像一个数组,数组中的每个元素的类型都应该一样,所以dataReader这个数组中的元素类型也被定义为object类型,以方便转换。二、正式总结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 testReturnASreturn 145GO-执行存储过程DECLARE RC intexec RC=testReturnselect 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-执行存储过程执行下列,返回1declare count int exec count = sp_add_table1 ,中三路,123456 select count执行下列,返回0declare count int exec count = sp_add_table1 ,中三路,123456 select count-说明查询结果不是0就是1 (3)带输出参数的存储过程(存储过程中可以有return可以没有return)例子A:-创建存储过程create procedure sp_output output int outputas set output = 121 return 1-执行存储过程执行下列,返回121declare out intexec sp_output out outputselect out执行下列,返回1declare out intdeclare count intexec count = sp_output out outputselect count-说明有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为return返回的值例子B:-创建存储过程create procedure sp_output output int outputas set output = 121-执行存储过程执行下列,返回121declare out intexec sp_output out outputselect out执行下列,返回0declare out intdeclare count intexec count = sp_output out outputselect count-说明没有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为0总结:(1)存储过程共分为3类: A.返回记录集的存储过程-其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录 B.返回数值的存储过程(也可以称为标量存储过程)-其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令 C.行为存储过程-用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作(2)含有return的存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论