怎么在C#代码中获得Oracle 数据的序列
答案:5 悬赏:10 手机版
解决时间 2021-03-24 16:59
- 提问者网友:动次大次蹦擦擦
- 2021-03-24 11:05
怎么在C#代码中获得Oracle 数据的序列
最佳答案
- 五星知识达人网友:青尢
- 2021-03-24 11:52
SQL 中@@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量。
因此C# 代码可如下进行处理,在插入后,立即取出@@identity值:
private static string AddRecordReturnNewID()
{ //二条语句一起执行,前一句是插入,后一句是取自增值
string sql = @"insert into [dbo].[Test1122] values(@Name,@Age);
select @ID=@@IDENTITY;";
SqlParameter[] para =
{
new SqlParameter("@Name", SqlDbType.NVarChar,20),
new SqlParameter("@Age", SqlDbType.Int),
new SqlParameter("@ID", SqlDbType.Int)
};
para[0].Value = "Nova";
para[1].Value = 24;
para[2].Direction = ParameterDirection.Output; //指示是返回值
DBHelper.ExecuteNonData(sql, para);
return para[2].Value.ToString(); //获取自增值
}
因此C# 代码可如下进行处理,在插入后,立即取出@@identity值:
private static string AddRecordReturnNewID()
{ //二条语句一起执行,前一句是插入,后一句是取自增值
string sql = @"insert into [dbo].[Test1122] values(@Name,@Age);
select @ID=@@IDENTITY;";
SqlParameter[] para =
{
new SqlParameter("@Name", SqlDbType.NVarChar,20),
new SqlParameter("@Age", SqlDbType.Int),
new SqlParameter("@ID", SqlDbType.Int)
};
para[0].Value = "Nova";
para[1].Value = 24;
para[2].Direction = ParameterDirection.Output; //指示是返回值
DBHelper.ExecuteNonData(sql, para);
return para[2].Value.ToString(); //获取自增值
}
全部回答
- 1楼网友:几近狂妄
- 2021-03-24 14:58
select Seq_Base_Wareclass.Nextval as NNN from dual
然后, 用DataReader读出来
int nextVal = int.Parse(dataReader[0].toString());
直接 int.Parse("Seq_Base_Wareclass.Nextval ") 的话, “Seq_Base_Wareclass.Nextval” 这个字符串是不会转成int的。
然后, 用DataReader读出来
int nextVal = int.Parse(dataReader[0].toString());
直接 int.Parse("Seq_Base_Wareclass.Nextval ") 的话, “Seq_Base_Wareclass.Nextval” 这个字符串是不会转成int的。
- 2楼网友:风格不统一
- 2021-03-24 13:59
这个Seq_Base_Wareclass.Nextval 是sql语句,要用command对象执行取返回结果。
- 3楼网友:青尢
- 2021-03-24 13:25
用OracleCommand执行你这句SQL的ExecuteScalar
- 4楼网友:旧脸谱
- 2021-03-24 12:33
你的代码是怎样的?
如果是取值的话,应该执行sql
select Seq_Base_Wareclass.Nextval from dual
然后或者第一行第一列的值就可以了。
如果是取值的话,应该执行sql
select Seq_Base_Wareclass.Nextval from dual
然后或者第一行第一列的值就可以了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯