sql存储过程返回值总结

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)asif(@in_name = '' or @in_name is null)return 1elsebegininsert into table1(name,addr,tel) values(@in_name,@in_addr,@in_tel)return 0end---执行存储过程<1>执行下列,返回1declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count<2>执行下列,返回0declare @count int exec @count = sp_add_table1 '','中三路','123456' select @count---说明查询结果不是0就是1(3)带输出参数的存储过程(存储过程中可以有return可以没有return)例子A:---创建存储过程create procedure sp_output@output int outputasset @output = 121return 1---执行存储过程<1>执行下列,返回121declare @out int exec sp_output @out output select @out<2>执行下列,返回1declare @out int declare @count intexec @count = sp_output @out output select @count---说明有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为return返回的值例子B:---创建存储过程create procedure sp_output@output int outputasset @output = 121---执行存储过程<1>执行下列,返回121declare @out int exec sp_output @out output select @out<2>执行下列,返回0declare @out int declare @count intexec @count = sp_output @out output select @count---说明没有return,只要查询输出参数,则查询结果为输出参数在存储过程中最后变成的值;只要不查询输出参数,则查询结果为0总结:(1)存储过程共分为3类:A.返回记录集的存储过程---------------------------其执行结果是一个记录集,例如:从数据库中检索出符合某一个或几个条件的记录B.返回数值的存储过程(也可以称为标量存储过程)-----其执行完以后返回一个值,例如:在数据库中执行一个有返回值的函数或命令C.行为存储过程-----------------------------------用来实现数据库的某个功能,而没有返回值,例如:在数据库中的更新和删除操作(2)含有return的存储过程其返回值为return返回的那个值(3)没有return的存储过程,不论执行结果有无记录集,其返回值是0(4)带输出参数的存储过程:假如有return则返回return返回的那个值,假如要select输出参数,则出现输出参数的值,于有无return无关
---------------------------------------------------------------------------------------------------------------------------------------------------
3.获得存储过程的返回值--通过程序获得
---------------------------------------------------------------------------------------------------------------------------------------------------
SqlParameter[] cmdParms = { .. ,new SqlParameter("@return",SqlDbType.Int)};
cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.ReturnValue;或者
cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.Output或者
cmdParms[cmdParms.Length - 1].Direction = ParameterDirection.Input;得到返回值 object bj = cmdParms[cmdParms.Length - 1].Value;

存储过程系列之存储过程返回值总结相关推荐

  1. C#调用存储过程详解(带返回值、参数输入输出等)

    C#调用存储过程详解(带返回值.参数输入输出等) 这篇文章主要介绍了C#调用存储过程的方法,结合实例形式详细分析了各种常用的存储过程调用方法,包括带返回值.参数输入输出等,需要的朋友可以参考下 本文实 ...

  2. (转)C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解

    原文链接:https://www.cnblogs.com/landeanfen/p/5501487.html 阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T ...

  3. c oracle存储过程返回值,C#调用存储过程详解(带返回值、参数输入输出等)

    本文实例讲述了C#调用存储过程的方法.分享给大家供大家参考,具体如下: CREATE PROCEDURE [dbo].[GetNameById] @studentid varchar(8), @stu ...

  4. 存储过程系列之存储过程具体操作过程及sql数据库调用

    Transact-SQL中的存储过程,非常类似于Java语言中的方法,它可以重复调用.当存储过程执行一次后,可以将语句缓存中,这样下次执行的时候直接使用缓存中的语句.这样就可以提高存储过程的性能. 存 ...

  5. 存储过程系列之存储过程sql数据库调用和程序代码调用

    1.存储过程,无参数的存储过程 创建无参数存储存储过程 Create Procedure DCEMREMR_TEMPLATE As SELECT TOP 10 [FILENAME],[FILETITL ...

  6. 第15章_存储过程与函数(创建存储过程、调用存储过程、存储函数的使用、存储过程和函数的查看、修改、删除)

    第15章_存储过程与函数 第15章_存储过程与函数 1. 存储过程概述 1.1 理解 1.2 分类 2. 创建存储过程 2.1 语法分析 2.2 代码举例 3. 调用存储过程 3.1 调用格式 3.2 ...

  7. 使用存储过程更新数据库!成功了但是返回值为 -1 的变态问题的解决办法!

    今天遇到个表态的问题!使用带事务的存储过程执行sql语句,看数据库里面插入更新都正常! 但是返回值一直为-1! 头那个大哦!先贴2个存储过程吧!看大侠们能否找到问题的存在 USE [My_DB] GO ...

  8. C#获取存储过程返回值和输出参数值的方法

    //转自网络,先留个底 1.获取Return返回值 //存储过程 //Create PROCEDURE MYSQL // @a int, // @b int //AS // return @a + @ ...

  9. vb获得mysql的值,VB.NET调用MySQL存储过程并获得返回值的方法

    本文实例讲述了VB.NET调用MySQL存储过程并获得返回值的方法.分享给大家供大家参考.具体实现方法如下: Dim myConnectionString As String = "Data ...

最新文章

  1. Django的路由系统
  2. BZOJ 4032: [HEOI2015]最短不公共子串(后缀自动机+记忆化搜索)
  3. java反射泛型类型,【Java反射】Java 泛型基础
  4. h5 跳转上个页面刷新_关于javascript跳转与返回和刷新页面
  5. Restoring Road Network(弗洛伊德算法的使用)
  6. cognos report在做同比时遇到的问题解决方法
  7. appcrash事件java,java – SpringBoot应用程序崩溃
  8. Flash Socket通信的安全策略问题
  9. CISCO认证涨价了
  10. 王炸!Waymo正式官宣无人车出行平台,瑟瑟发抖的不止Uber
  11. 请检查 mysql 模块是否正确加载_mysql_connect() 不支持 请检查 mysql 模块是否正确加载...
  12. CefSharp 知道这些就完事了
  13. 室内环境空气质量监测系统
  14. 打印程序在计算机上的应用程序,无法打印显示打印机程序服务没有运行解决办法...
  15. 手机游戏的分析,设计,思考
  16. MAC中文版 FCPX V10.6.5 专属视频剪辑后期工具及其插件安装使用教程
  17. 面向WiFi密码破解的渗透测试研究
  18. 共享wifi流量主小程序项目
  19. 雷军VS黄章:现实主义和梦幻主义的商业对决
  20. Vue eslint 报错 eval can be harmful解决办法

热门文章

  1. DropDownList如何绑定DataTable,如何绑定DataSet
  2. Fibonacci (hdu1568)数学公式
  3. [译]几个步骤来删除SQL Server数据库用户
  4. 【Data guard】Switchover切换
  5. Linux之文件属性详解
  6. 这4个小程序为什么有很多人在用,仅仅是因为不占手机内存空间?
  7. C++ and Java template class and function 模板类和模板函数
  8. 暗能量什么样?爱因斯坦只“蒙”对了一半
  9. Facebook人工智能实验室的前世今生
  10. 栈和堆(Stack Heap)