怎么在C#代码中获得Oracle 数据的序列
发布网友
发布时间:2022-05-02 06:55
我来回答
共5个回答
热心网友
时间:2022-07-01 13:26
select Seq_Base_Wareclass.Nextval as NNN from al
然后, 用DataReader读出来
int nextVal = int.Parse(dataReader[0].toString());
直接 int.Parse("Seq_Base_Wareclass.Nextval ") 的话, “Seq_Base_Wareclass.Nextval” 这个字符串是不会转成int的。
热心网友
时间:2022-07-01 13:26
你的代码是怎样的?
如果是取值的话,应该执行sql
select Seq_Base_Wareclass.Nextval from al
然后或者第一行第一列的值就可以了。
热心网友
时间:2022-07-01 13:27
这个Seq_Base_Wareclass.Nextval 是sql语句,要用command对象执行取返回结果。
热心网友
时间:2022-07-01 13:27
用OracleCommand执行你这句SQL的ExecuteScalar
热心网友
时间:2022-07-01 13:28
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(); //获取自增值
}