在插入语句后立即获取 PK ODBC SQL Anywhere
get the PK right after an insert statement ODBC SQL Anywhere
我在 SQL Anywhere 数据库上有这个插入语句,我使用 ODBC 进行插入,这是句子的一小段(只是一个例子)
cmd_ex.CommandText = @" insert into tabla
(numero1, numero2, numero3, numero4...numeroN)
VALUES
(?,?,?,?,?)";
并且工作正常,唯一的问题是 PK 是自动递增的,如果可能的话,我需要在同一条语句中恢复该值,你能帮我吗?
基于我尝试过的建议
cmd_.CommandText = @" insert into table(...)
VALUES
(?,?,...,?) SELECT SCOPE_IDENTITY()";
Int32 id = Convert.ToInt32(cmd_.ExecuteScalar());
MessageBox.Show("valor del nuevo registro "+id);
但收到错误错误 [HY000] [Sybase][ODBC 驱动程序][SQL 任何地方] 不能在批处理中使用主机变量
你不能同时执行2个语句并将第二个语句的值取到一个变量中。
你需要一个一个执行。我不确定您使用的是哪种语言,但类似下面的内容应该可以。
cmd_.CommandText = @" insert into table(...)
VALUES
(?,?,...,?)";
cmd_.ExecuteScalar();
cmd_.CommandText = @"select @@Identity";
Int32 id = Convert.ToInt32(cmd_.ExecuteScalar());
MessageBox.Show("valor del nuevo registro "+id);
我在 SQL Anywhere 数据库上有这个插入语句,我使用 ODBC 进行插入,这是句子的一小段(只是一个例子)
cmd_ex.CommandText = @" insert into tabla
(numero1, numero2, numero3, numero4...numeroN)
VALUES
(?,?,?,?,?)";
并且工作正常,唯一的问题是 PK 是自动递增的,如果可能的话,我需要在同一条语句中恢复该值,你能帮我吗?
基于我尝试过的建议
cmd_.CommandText = @" insert into table(...)
VALUES
(?,?,...,?) SELECT SCOPE_IDENTITY()";
Int32 id = Convert.ToInt32(cmd_.ExecuteScalar());
MessageBox.Show("valor del nuevo registro "+id);
但收到错误错误 [HY000] [Sybase][ODBC 驱动程序][SQL 任何地方] 不能在批处理中使用主机变量
你不能同时执行2个语句并将第二个语句的值取到一个变量中。
你需要一个一个执行。我不确定您使用的是哪种语言,但类似下面的内容应该可以。
cmd_.CommandText = @" insert into table(...)
VALUES
(?,?,...,?)";
cmd_.ExecuteScalar();
cmd_.CommandText = @"select @@Identity";
Int32 id = Convert.ToInt32(cmd_.ExecuteScalar());
MessageBox.Show("valor del nuevo registro "+id);