当前位置: 首页 > 编程笔记 >

使用C#代码获取存储过程返回值

东门焕
2023-03-14
本文向大家介绍使用C#代码获取存储过程返回值,包括了使用C#代码获取存储过程返回值的使用技巧和注意事项,需要的朋友参考一下

废话不多说,直接给大家贴C#代码了。

/// <summary>
/// 执行存储过程,返回" 返回值"
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>执行存储过程的返回值</returns>
public static int RunProcedureWithReturn(string storedProcName, IDataParameter[] parameters)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
}
}
/// <summary>
/// 创建 SqlCommand 对象实例(用来返回一个整数值) 
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand 对象实例</returns>
private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
}

ps:在C#中调用存储过程中的两种返回值

//存储过程
//create proc authors_count @outrus int output
//as
//declare @authors int
//select @authors=count(*) from authors
//set @outrus=@authors
//return @authors
System.Data.SqlClient.SqlConnection sqlcon=new System.Data.SqlClient.SqlConnection("server=(local);database=pubs;uid=sa;pwd=;");
System.Data.SqlClient.SqlCommand sqlcmd=new System.Data.SqlClient.SqlCommand("authors_count",sqlcon);
sqlcmd.CommandType=System.Data.CommandType.StoredProcedure;
// sqlcmd.CommandText="authors_count";
// sqlcmd.Connection=sqlcon;
sqlcmd.Parameters.Add("@rus",System.Data.SqlDbType.Int);
sqlcmd.Parameters.Add("@outrus",System.Data.SqlDbType.Int);
sqlcmd.Parameters[0].Direction=System.Data.ParameterDirection.ReturnValue;
sqlcmd.Parameters[1].Direction=System.Data.ParameterDirection.Output;
sqlcon.Open();
//int res=(int)sqlcmd.ExecuteNonQuery();//此时返回的不是存储过程的返回值,以上只是返回delete,update,insert所影响的行数
sqlcmd.ExecuteNonQuery();
string res=sqlcmd.Parameters[0].Value.ToString();//这样就可以得到存储过程的返回值
sqlcon.Close();
this.label1.Text="存储过程的返回值是:"+res.ToString();//由return 返回
this.label2.Text="存储过程中返回的output值:"+sqlcmd.Parameters[1].Value.ToString();//由output返回
 类似资料:
  • 问题内容: 我的团队正在使用基于python的Wiki服务器,该服务器调用SQL Server数据库上的存储过程。理想情况下,我们希望从存储过程中返回整数值(1,0,-1)以显示基本结果。 根据Google Groups上 的2008年主题,pyodbc不支持返回值,因此另一种选择是将结果选择为一行,然后进行检查。还是这样吗?是否有(受支持和记录的)编程方式来检查SQL存储过程的返回值?(如果是这

  • 本文向大家介绍Python中执行存储过程及获取存储过程返回值的方法,包括了Python中执行存储过程及获取存储过程返回值的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python中执行存储过程及获取存储过程返回值的方法。分享给大家供大家参考,具体如下: 在Pathon中如何执行存储过程呢?可以使用如下方法: 存储过程定义基本如下: 1. 使用adodbapi 2. 使用pymssq

  • 问题内容: 首先介绍技术资料: 我们正在使用VS 2008 pro并正在运行MS SQL 2008服务器。对于源代码控制,我们使用Subversion。 我们真的很想让我们的存储过程处于颠覆状态,因此我们可以知道更改的内容,时间等。 但是,要使其正常工作,它必须是无缝的,否则,开发人员将忘记将过程包括在其提交中。 那么,对此有什么好的解决方案吗? 我敢肯定我们不能成为唯一拥有此问题的公司:-) 问

  • 问题内容: 我希望能够通过脚本的返回值定义变量。这是我目前拥有的: 我已经检查了SCRIPT的返回值,但是,当我尝试设置此变量时,它总是返回0(http://docs.python.org/library/subprocess.html#subprocess.call)。我将如何运行此脚本并捕获返回值以将其存储为变量? 问题答案: 使用代替。

  • 我有一个存储过程,它接受参数并返回一个长值。 我如何使用jdbcTemplate来调用这个存储过程并获得返回的值。 这样对吗?

  • 我有一个使用SimpleJDBCCall调用DB过程的DAO函数。但是,我无法读取存储过程返回的CLOB数据。当我尝试对返回的CLOB值(result.get(“out_rtn_xml”))执行.toString()时,我只在字符串中得到以下内容:oracle.sql.CLOB@f762282a 下面是代码片段。