在插入语句ODBC SQL Anywhere之后立即获取PK

时间:2018-04-05 15:35:45

标签: sql sqlanywhere

我在SQL Anywhere数据库上有这个insert语句,对于我使用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);

但出现错误ERROR [HY000] [Sybase] [ODBC驱动程序] [SQL Anywhere]批处理中可能未使用主机变量

1 个答案:

答案 0 :(得分:1)

您不能同时执行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);