Vb.net 从insert语句返回值

Vb.net 从insert语句返回值,vb.net,oracle,asp.net-2.0,Vb.net,Oracle,Asp.net 2.0,使用OLEDB从ASP.NET 2.0(VB)应用程序处理Oracle 9i数据库。有没有办法让insert语句返回一个值?我已经设置了一个序列来对进入数据库的条目进行编号,但是我需要在插入之后返回该值,以便我可以对我刚才在VB后面的代码中输入的集合进行一些操作。如果该值是数据库创建的键,那么您已经遇到了一个很好的示例,说明为什么应该使用UUID作为表键,并在代码中生成它们 此方法将为您的设置提供更快的性能。Oracle似乎有一个名为“returning”的keywod,它可以返回插入行的给定列

使用OLEDB从ASP.NET 2.0(VB)应用程序处理Oracle 9i数据库。有没有办法让insert语句返回一个值?我已经设置了一个序列来对进入数据库的条目进行编号,但是我需要在插入之后返回该值,以便我可以对我刚才在VB后面的代码中输入的集合进行一些操作。

如果该值是数据库创建的键,那么您已经遇到了一个很好的示例,说明为什么应该使用UUID作为表键,并在代码中生成它们


此方法将为您的设置提供更快的性能。

Oracle似乎有一个名为“returning”的keywod,它可以返回插入行的给定列,但是这可能需要您通过调用序列中的下一个值手动设置“autoincrement”字段

请查看有关它的讨论:


但是,您始终可以在第二次查询中选择当前序列号,类似于MySQLs
last\u insert\u id()

首先使用select语句获取下一个序列。你可以用它来做这件事

SELECT my_seq.nextval FROM dual
使用您在随后的INSERT语句中检索到的序列

INSERT ...
INSERT ...
一些可能性:

1) 使用RETURNING子句:

INSERT INTO emp (empno, ename) VALUES (emp_seq.NEXTVAL, 'ANDREWS')
RETURNING empno INTO :variable;
2) 使用序列CURRVAL:

INSERT INTO emp (empno, ename) VALUES (emp_seq.NEXTVAL, 'ANDREWS');
SELECT emp_seq.CURRVAL INTO :variable FROM DUAL;

CURRVAL返回会话生成的最后一个序列值。

您好,这是否也适用于SQL Server。对于SQL Server 2008 R2,我也需要同样的东西。@Sujay,对不起,我不知道SQL Server,但请看,谢谢你的帮助。但我不是在寻找存储过程。Sujay:这似乎至少对我来说是一个单独的语句(来自那篇文章中的一个回复)。插入MyTable(MyData)值(1)选择范围\标识()