Sql Server 中存储过程的output return的区别
看http://zxianf.blog.163.com/blog/static/301207012009114104124969/中片关于Sql Server中存储过程output和return值的区别
在里面有讲解,我在自己本机中测试的结果如下,
1:ReturnValue只能返回0,1,-1这样的数据,局限性很大 ,而在存储过程中用OutPut参数,可以返回各种类型的数据,比较灵活方便。
ReturnValue 是用来返回错误码的,output是指存储过程传出参数 例如 :
@Flag varchar(20) output
1 sql存储过程: 2 create proc Test 3 @B varchar(50) output, 4 @C varchar(50) 5 as 6 begin 7 declare @A int 8 set @B=@C+'Return' 9 set @A=100010 return @A11 end
1 System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection("server=(local);uid=sa;pwd=sa;database=ServerUForVhost1"); 2 System.Data.SqlClient.SqlCommand comm = new System.Data.SqlClient.SqlCommand("Test", conn); 3 comm.CommandType = System.Data.CommandType.StoredProcedure; 4 //调用sqlhelper时这样写,单独不行:comm.Parameters.Add(不能addsqlparameter[]) 5 //SqlParameter[] parameter ={ 6 // new System.Data.SqlClient.SqlParameter("@A",System.Data.SqlDbType.Int,4), 7 // new System.Data.SqlClient.SqlParameter("@B",System.Data.SqlDbType.VarChar,50), 8 // new System.Data.SqlClient.SqlParameter("@C",System.Data.SqlDbType.VarChar,50) 9 // };10 //parameter[2].Direction = ParameterDirection.Input;11 // parameter[0].Direction = ParameterDirection.ReturnValue;12 // parameter[1].Direction = ParameterDirection.Output;13 comm.Parameters.Add(new System.Data.SqlClient.SqlParameter("@A", System.Data.SqlDbType.Int, 4));14 comm.Parameters["@A"].Direction = ParameterDirection.ReturnValue;15 comm.Parameters.Add(new System.Data.SqlClient.SqlParameter("@B", System.Data.SqlDbType.VarChar, 50));16 comm.Parameters["@B"].Direction = ParameterDirection.Output;17 comm.Parameters.Add(new System.Data.SqlClient.SqlParameter("@C", System.Data.SqlDbType.VarChar, 50));18 comm.Parameters["@C"].Value = "insertmsg";19 conn.Open();20 int i = comm.ExecuteNonQuery();21 string result1 = comm.Parameters["@A"].Value.ToString();22 string result2 = comm.Parameters["@B"].Value.ToString();23 conn.Close();
1 public void TestOutput(out string pTable, out int pPageIndex, out int pTotalPage) 2 { 3 pTable = string.Empty; 4 pPageIndex = 0; 5 pTotalPage = 0; 6 string procedureName = "up_PageOutput"; 7 System.Collections.Hashtable result = new System.Collections.Hashtable(); 8 // 9 try10 {11 using (SqlConnection connection = new SqlConnection(SqlHelper.SqlHelper.ConnectionStringLocalTransaction))12 {13 connection.Open();14 if (connection.State != ConnectionState.Open)15 {16 connection.Open();17 }18 using (SqlCommand cmd = new SqlCommand(procedureName, connection))19 {20 // 注意这里要把CommandType设为StoredProcedure解析为存储过程21 // 也可默认为Text 以SQL语句模式解析,这样调用存储过程就要用SQL语句 EXEC <存储过程名> <参数...> 写 SQL 语句调用22 cmd.CommandType = CommandType.StoredProcedure;23 cmd.CommandTimeout = 60;24 cmd.Parameters.AddRange(new SqlParameter[] 25 { 26 new SqlParameter("@TableName",SqlDbType.VarChar,500,ParameterDirection.Output,false,0,0,"TableName",DataRowVersion.Default,pTable),27 //new SqlParameter("@pageIndex", SqlDbType.Int,pPageIndex), 28 new SqlParameter("@pageIndex",pPageIndex),29 //new SqlParameter("@TotalPage", SqlDbType.Int,pTotalRecord)30 new SqlParameter("@TotalPage",pTotalPage)31 });32 cmd.Parameters["@TableName"].Direction = ParameterDirection.Output;33 cmd.Parameters["@pageIndex"].Direction = ParameterDirection.Output;34 cmd.Parameters["@TotalPage"].Direction = ParameterDirection.Output;35 cmd.Parameters.Add(new SqlParameter("@retrunValue", SqlDbType.VarChar, 500));36 cmd.Parameters["@retrunValue"].Direction = ParameterDirection.ReturnValue; 37 object hang = cmd.ExecuteNonQuery();38 foreach (SqlParameter param in cmd.Parameters)39 {40 // 这里把输出参数放到一个 HashTable 里面,方便取出41 if (param.Direction == ParameterDirection.Output || param.Direction == ParameterDirection.InputOutput || param.Direction == ParameterDirection.ReturnValue)42 {43 result.Add(param.ParameterName, param.Value);44 }45 }46 //pTotalRecord = SqlHelper.SqlHelper.ExecuteNonQuery(SqlHelper.SqlHelper.ConnectionStringLocalTransaction, CommandType.StoredProcedure, procedureName, param);47 object retValue1 = cmd.Parameters["@TotalPage"].Value;48 //pTotalPage = Convert.ToInt32(retValue1);49 object retValue2 = cmd.Parameters["@pageIndex"].Value;50 object retValue3 = cmd.Parameters["@TableName"].Value;51 object retValue4 = cmd.Parameters["@retrunValue"].Value;52 53 }54 55 connection.Close();56 }57 }58 catch (Exception)59 {60 61 }62 }
其中几个关键主要设置参数的方式和和取得返回值的方式。
转载于:https://www.cnblogs.com/huangyuanfengxue/archive/2012/02/29/2373339.html
Sql Server 中存储过程的output return的区别相关推荐
- SQL Server中Text和varchar(max)数据类型区别
SQL Server中Text和varchar(max)数据类型区别 以前只知道text和image是可能被SQL Server淘汰的数据类型,但具体原因不太清楚,今天读书的时候发现了text与var ...
- SQL Server中临时表与表变量的区别
我们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量.在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候 ...
- SQL Server--[转]SQL Server中临时表与表变量的区别
http://blog.csdn.net/skyremember/archive/2009/03/05/3960687.aspx 我们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临 ...
- sql server中存储过程提示错误
1.今天写存储过程是运行时总是提示如下错误: Subquery returned more than 1 value. This is not permitted when the subquery ...
- sql server序列_SQL Server中身份和序列之间的区别
sql server序列 In SQL Server, both the SEQUENCE object and IDENTITY property are used to generate a se ...
- 了解SQL Server中的GUID数据类型
什么是GUID? (What is a GUID?) GUID is a 16 byte binary SQL Server data type that is globally unique acr ...
- 易语言 存储过程 mysql_在易语言中调用MS SQL SERVER数据库存储过程(Transact-SQL)方法总结...
作者:liigo 日期:2010/8/25 Microsoft SQL SERVER 数据库存储过程,根据其输入输出数据,笼统的可以分为以下几种情况或其组合:无输入,有一个或多个输入参数,无输出,直接 ...
- SQL Server中的部分存储过程
介绍 (Introduction) SQL is an old language - almost 50 years! The first commercially-available version ...
- SQL Server中的功能与存储过程
介绍 (Introduction) Usually DBAs prefer stored procedures in SQL instead of functions in SQL Server. I ...
最新文章
- android xml ui编辑器,Android Studio(八):使用Layout Editor设计UI
- 企业生产环境不同业务的Linux分区方案
- 健康心理要防八种“过度”
- mysql的快照速度_mysql 快照读 当前度
- 数组和指针、数组指针和指针数组
- python的常量和变量_python变量和常量
- 指定特定的内容为首页
- PWN-COMPETITION-GeekChallenge2021
- 软件加入使用时间_信考宝典 中考软件简介
- 应届生去软通动力怎么样_超强干货:应届生如何找实习工作?
- cnapckSurround c++builder Region 代码折叠快捷键
- latex表格内容上下居中_Latex-表格内容垂直居中
- 软件名称后缀含义?(如RC、RTL)
- 我国跨境电子商务的发展概念以及发展概况
- Qt中的矩阵计算库eigen
- 【SQL数据库】数据库的创建、查询、插入等操作使用方法(结合黑皮书教材网站(db-book中的例子)在MySQL Workbench和shell中实现查询操作
- 论文翻译之Enriched Feature Guided Refinement Network for Object Detection
- php调用mahout包,mahout实现基于用户的Mahout推荐程序
- display lldp neighbor brief
- 读《学会提问》——少谈些主义,多研究些问题