sql - 存储过程在插入后返回主键?

标签 sql stored-procedures db2 ibm-midrange

我想要一个存储过程在执行后返回新记录的主键。我认为它将由程序中的 OUT 参数返回。但是如何选择新插入的行 ID 呢?我不想使用 select MAX(row_id) 因为它是一个多用户环境。 任何程序示例将不胜感激。

我的平台是 ISeries DB2 V5 R4。谢谢。

编辑

行 id 列不是标识列。它使用一个序列作为键,该序列在插入表之前通过触发器生成。

编辑

这是我想做的

Begin Stored procedure
   Insert into Employees;
   (row id gets automatically generated by trigger) 
Return row id ;

我想避免在返回行 ID 时进行选择。

最佳答案

只需将输出参数设置为包含 PK 的列即可。

CREATE PROCEDURE DB2TBL.DO_STUFF (IN Param1 INT, IN Param2 CHAR(32),OUT Param3 INT) 
/* Param1 is primary key */
LANGUAGE SQL
P1: BEGIN
DECLARE OUTPARAM INT;
/* Do the stored procedure */
SET OUTPARAM = Param1; 

关于sql - 存储过程在插入后返回主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315739/

相关文章:

c# - 使用 Linq to Entities 的存储函数

MYSQL 从每个类别中选择 2 个随机行

c# - 使用 SQL Server 中的存储过程动态更新

php - 在 PHP 中使用内联查询与存储过程

linq-to-sql - 访问数据库时强制 LINQ 使用存储过程

sql - 插入后为当前时间戳更新创建触发器

sql - 在 SQL 中正确使用 Count() 和 Sum() 吗?

mysql - 选择并删除具有特定 ID 的重复记录

sql - 在 SQL 中,如何为表的 future INSERT 语句添加约束?

java - [ibm][db2][jcc][t4][2055][11259] 由于分发协议(protocol)错误而执行失败