.NET中SQLServer使用set @ReturnValue= @@IDENTITY的Oracle写法

最近还是在做这个项目,在上一篇文章中提到了。SQLServer的select @@identity在Oracle中的写法但是不知道为什么我在执行的时候出现了错误。显示字符错了,四处查找资料。翻看Oracle的文档,最后找到了一个完美替换的写法。在SQLServer中使用是这样的

StringBuilder strSql=new StringBuilder();
strSql.Append("insert into t_orders(order_num,user_num)");
strSql.Append(" values (");
strSql.Append("@order_num,@user_num)");
strSql.Append(";set @ReturnValue= @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@order_num", SqlDbType.NVarChar,100),
new SqlParameter("@user_num", SqlDbType.Int,4),
new SqlParameter("@ReturnValue",SqlDbType.Int)};
parameters[0].Value = model.order_no;
parameters[1].Value = model.user_id;
parameters[3].Direction = ParameterDirection.Output;

以上这个方法就可以在运行之后使用parameters[3].Value取出刚刚插入的数据自增ID。但是在Oracle中,是本身没有自增ID的,所以我采用触发器与序列来实现自增列。但是Oracle是不支持set @ReturnValue= @@IDENTITY这种方式的。那么在Oracle中就必需这样

StringBuilder strSql=new StringBuilder();
strSql.Append("insert into t_orders(order_num,user_num)");
strSql.Append(" values (");
strSql.Append(":order_num,:user_num)");
strSql.Append(" returning id into :ReturnValue");
SqlParameter[] parameters = {
new SqlParameter(":order_num", SqlDbType.NVarChar,100),
new SqlParameter(":user_num", SqlDbType.Int,4),
new SqlParameter(":ReturnValue",SqlDbType.Int)};
parameters[0].Value = model.order_no;
parameters[1].Value = model.user_id;
parameters[3].Direction = ParameterDirection.Output;

使用以上方法就可以实现SQLServer中的set @ReturnValue= @@IDENTITY功能了。

本博客所有文章如无特别注明均为原创

如果觉得对你有帮助,可以通过下方打赏对作者表示鼓励

本文采用知识共享署名-非商业性使用-相同方式共享

如若转载,请注明出处:《.NET中SQLServer使用set @ReturnValue= @@IDENTITY的Oracle写法》https://www.fangsi.net/767.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
锋哥的头像锋哥管理员
上一篇 2014年2月18日 11:27
下一篇 2014年3月17日 10:44

相关推荐

发表回复

登录后才能评论