如何在Advantage StreamlineSQL ODBC中插入/更新后返回列值?
在Advantage StreamlineSQL ODBC中获取插入/更新后的列值
方法1:使用OUTPUT子句(替代PostgreSQL的RETURNING)
Advantage StreamlineSQL支持OUTPUT子句,可直接返回插入或更新操作影响的行数据,语法逻辑和PostgreSQL的RETURNING类似。
插入操作示例
INSERT INTO Table (value, value1, value2) OUTPUT inserted.last_id VALUES ('value', 'value1', 'value2');
执行后结果集会直接返回新插入行的last_id值。
更新操作示例
UPDATE Table SET value = 'new_value' WHERE id = 123 OUTPUT updated.last_id, updated.value;
该语句会返回被更新行的last_id以及更新后的value字段值。
方法2:创建自定义存储过程
如果需要复用插入并返回数据的逻辑,可以创建存储过程来实现:
CREATE PROCEDURE InsertAndReturnID( @val VARCHAR(50), @val1 VARCHAR(50), @val2 VARCHAR(50) ) RETURNS INTEGER AS BEGIN DECLARE @newID INTEGER; INSERT INTO Table (value, value1, value2) VALUES (@val, @val1, @val2); -- 获取刚插入行的last_id(适用于自增列或触发器生成的ID) SET @newID = (SELECT last_id FROM Table WHERE CURRENT OF INSERT); RETURN @newID; END;
调用存储过程的方式:
EXECUTE InsertAndReturnID('value', 'value1', 'value2');
执行后会直接返回新插入行的last_id。
注意事项
- 若
last_id是自增列,也可使用IDENT_CURRENT('Table')获取最后插入的自增值,但并发场景下CURRENT OF INSERT或OUTPUT子句的准确性更高。 - 确保你的Advantage StreamlineSQL版本支持上述语法(通常v10及以上版本支持
OUTPUT子句)。
内容的提问来源于stack exchange,提问作者MadMax Atr
相关产品推荐
相关产品推荐

