首页 新闻 会员 周边

怎样接收SCOPE_IDENTITY()返回的值??

0
悬赏园豆:20 [已解决问题] 解决于 2009-04-01 19:56
<P>&nbsp;有这样一个存储过程:<BR>set ANSI_NULLS ON<BR>set QUOTED_IDENTIFIER ON<BR>go<BR>ALTER PROCEDURE [dbo].[sp_Question_Insert] <BR>(<BR>&nbsp;@question_id bigint,<BR>&nbsp;@Content Ntext<BR>&nbsp;)<BR>AS<BR>begin<BR>SET NOCOUNT ON;<BR>&nbsp;INSERT INTO [Question] (<BR>&nbsp;&nbsp;&nbsp; [version_id],<BR>&nbsp;&nbsp;&nbsp; [content]) <BR>&nbsp;&nbsp;&nbsp; values (<BR>&nbsp;&nbsp;&nbsp; @versionid,<BR>&nbsp;&nbsp;&nbsp; @Content)<BR>SET @question_id = SCOPE_IDENTITY()</P> <P>SCOPE_IDENTITY()<FONT size=2>返回为当前会话和当前作用域中的任何表最后生成的标识值,这个值我想在CS文件里接收,怎么接收呢??</FONT></P>
问题补充: 想用这个返回值判断是否插入成功?应该怎么判断呢? int wwdresult = quest_op.questiont_insert( cont);//调用执行存储过程的方法. SqlParameter param = new SqlParameter("@question_id", null); param.Direction = ParameterDirection.Output; int result = int.Parse(param.Value.ToString()); if (wwdresult==result) { SystemTools.WebMessageBox("插入成功!"); } else { SystemTools.WebMessageBox("数据库操作失败!"); } } 这样做为什么不行?
aito的主页 aito | 初学一级 | 园豆:170
提问于:2008-08-03 17:25
< >
分享
最佳答案
0
对,要把存储过程的参数设置为 out,输出, 然后在以#里面接收,具体可以看下我这个例子 http://hi.baidu.com/84ww/blog/item/b2cd5fd98ce7ea2811df9b32.html 存储过程输出:@strOut nvarchar(50) = NULL OUTPUT 希望对楼主有帮助!
启程 | 小虾三级 |园豆:570 | 2008-08-15 23:59
其他回答(4)
0
使用存储过程的Output参数就行,修改question_id为输出参数,如: @question_id bigint output 在代码中也要指定参数的方向: SqlParameter para = new SqlParameter("@question_id",null); para.Direction = ParameterDirection.Output; 这样跟据para.Value就可以获取值了。
TerryLee | 园豆:3300 (老鸟四级) | 2008-08-03 17:37
0
楼上这种方法非常好.
侯垒 | 园豆:3435 (老鸟四级) | 2008-08-03 17:41
0
你的程序完全不正确…… 你的参数并没有传递到存储过程中去,而且后面那个判断也不正确 如果是要判断是否插入成功,只需要判断在执行存储过程时有没有发生异常,如果没有发生异常,就是插入成功了,反之则是失败
丁学 | 园豆:18730 (专家六级) | 2008-08-04 10:53
0
quest_op是你们的数据库查询类吧? 无论你的questiont_insert方法是怎么写的,既然能执行这个存储过程,那么就说明能够加参数。你就把你的 SqlParameter param = new SqlParameter("@question_id", null); param.Direction = ParameterDirection.Output; 这段代码中的param加到那个sqlcommand上 PS:不要用param做变量名,这个习惯不是很好
电机拖动 | 园豆:1295 (小虾三级) | 2008-08-09 01:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册