C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息

 

C#调用SQL中的存储过程中有output参数,类型是字符型的时候一定要指定参数的长度。不然获取到的结果总是只有第一字符。本人就是由于这个原因,折腾了很久。在此记录一下,供大家以后参考!

例如:

CREATE PROCEDURE sp_AccountRole_Create
@CategoryID int,
@RoleName nvarchar(10),
@Description nvarchar(50),
@RoleID int output
AS
DECLARE @Count int
-- 查找是否有相同名称的记录
SELECT @Count = Count(RoleID) FROM Account_Role WHERE
RoleName = @RoleName
IF @Count = 0
INSERT INTO Account_Role
(CategoryID, RoleName, Description) valueS
(@CategoryID, @RoleName, @Description)
SET @RoleID = @@IDENTITY
RETURN 1
GO

 

SqlConnection DbConnection = new SqlConnection(mConnectionString);
SqlCommand command = new SqlCommand( "sp_AccountRole_Create", DbConnection );
DbConnection.Open(connectString);
// 废置SqlCommand的属性为存储过程
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@CategoryID", SqlDbType.Int, 4);
command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);
command.Parameters.Add("@Description", SqlDbType.NVarChar, 50);
command.Parameters.Add("@RoleID", SqlDbType.Int, 4);
// 返回值
command.Parameters.Add("Returnvalue",
SqlDbType.Int,
4, // Size
ParameterDirection.Returnvalue,
false, // is nullable
0, // byte precision
0, // byte scale
string.Empty,
DataRowVersion.Default,
null );
command.parameters["@CategoryID"].value = permission.CategoryID;
command.parameters["@RoleName"].value = permission.PermissionName;
command.parameters["@Description"].value = permission.Description;
// 可以返回新的ID值
command.parameters["@RoleID"].Direction = ParameterDirection.Output;
int rowsAffected = command.ExecuteNonQuery();
int result = command.parameters["Returnvalue"].value;
int newID = command.parameters["@RoleID"].value;

 

 

 

时间: 2024-09-30 20:06:32

C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息的相关文章

c#-C#程序调用SQL SERVER存储过程的output参数始终为空,求助?

问题描述 C#程序调用SQL SERVER存储过程的output参数始终为空,求助? C#中的如下两条语句调用存储过程output参数始终为空(dataGridView1能正确调用到想要的select数据,但是存储过程的两个输出参数值不能传递给两个texBox.Text),不知为何?textBox1.Text = parameters[2].Value.ToString();textBox2.Text = nowpage + ""/"" + parameters[3

sql 存储过程执行过程中的奇怪问题

问题描述 sql 存储过程执行过程中的奇怪问题 某个存储过程,大概如下 b=0,c=0,d=0 如果 a=1 执行下面的 b=b+2;c=c+3;d=d+4 否则 b=b-2;c=c-3;d=d-4 当第一次赋值a=1的时候,存储过程只执行了 b=b+2;d=d+4:而c=c+3;这个语句无执行,所以这个时候c还是0 接着执行a!=0的时候,存储过程执行 b=b-2;c=c-3;d=d-4.所以这个时候c=-3 再执行a=1,存储过程执行 b=b+2;c=c+3;d=d+4.所以这个时候c=0

SQL SERVER 2008:内部查询处理器错误: 查询处理器在执行过程中遇到意外错误

   今天一个同事突然告诉我,以前跑得很正常的一个SQL语句,执行时突然报如下错误:         消息1222,级别16,状态18,第1 行         已超过了锁请求超时时段.         消息8630,级别16,状态1,第1 行         内部查询处理器错误: 查询处理器在执行过程中遇到意外错误. 我 执行了一下这个SQL语句,也是报如上错误,感觉有点奇怪,还是第一次遇到这种错误.我初步怀疑是SQL中某个表出现一致性错误或分配错误等原因造成.于 是先用DBCC CHECKT

sql-MS SQL如何在执行过程中知道有多少用户变量.

问题描述 MS SQL如何在执行过程中知道有多少用户变量. 在一些语句对SQL的表进行增删改操作时,我想通过触发器把系统和用户操作的变量名称搞个清单列出来.新手求助,谢谢! 解决方案 楼主的意思是想知道执行的sql语句有多少个条件参数?这个还是别用触发器了,在业务逻辑层解析是不是会更好点 解决方案二: 现在情况程序就是在业务逻辑层有变量传入到SQL语句中执行,在追踪中只能拿到追查到绝对值,我想找到这个变量,从而通过触发器得到其变量值,进而引用.

查看MSSQL 执行过程中执行状态

  创建一个存储过程:dba_WhatSQLIsExecuting 然后执行这个存储过程就可以查看相关的信息了. MS SQL 执行过程中执行状态,可查看当前正在执行的sql等信息 当前执行到哪句SQL,等,这个可以帮助长时间的SQL执行做进度条. USE [RMA_DWH] GO /****** Object: StoredProcedure [dbo].[dba_WhatSQLIsExecuting] Script Date: 07/12/2013 10:28:27 ******/ SET

jbpm-关于JBPM执行过程中出现的异常

问题描述 关于JBPM执行过程中出现的异常 在使用JBPMTestCase进行测试时,测试一段时间之后就会出现一次类似的错误,之前将数据库表删除之后重新创建表,就没有该问题了,现在又出现这个情况了,请各位大神指点.错误异常代码如下. org.hibernate.exception.GenericJDBCException: could not execute native bulk manipulation query at org.hibernate.exception.SQLStateCon

deluge-shell能处理在执行过程中产生新的console,并在console中执行命令的情况吗?

问题描述 shell能处理在执行过程中产生新的console,并在console中执行命令的情况吗? 在shell执行 deluge-console 命令时会单独打开一个console cli窗口,可在其中执行一系列自定义命令.这个过程我希望全部用shell来实现,请问shell能 处理这种执行过程中出现新的命令执行console的情况吗 解决方案 可以,启动一个cmd.exe

浅谈SEO优化执行过程中的几点弊端

SEO作为近年来流行于站长界的网络推广.营销方式,正越来越被行业内从业人员的重视.一则是相对大部分传统付费营销方式在费用上的缺省,二则是相对传统免费推广方法在效果上的显而易见. 虽然SEO优化是依附于搜索引擎而生存的网站优化方法,但以其各方面的优势被站长们热力追捧,必定具有其不可抗拒的魅力.早些时候,笔者也曾简单介绍了网站seo优化的原因.其中指出网站为什么要做seo优化的5点原因:1.从搜索引擎获得的流量质量高;2.使网站简单易用,加强用户体验;3.长期有效的推广手段;4.可扩展性强;5.性价

wmic-bat执行过程中遇到不存在的命令如何跳过?

问题描述 bat执行过程中遇到不存在的命令如何跳过? 由于系统不存在wmic命令 ,在执行到第三排时退出了. 如何写个判断语句,当命令不存在时,逃过执行后面的语句.