回归到底意味着什么。。。。进入你在Oracle SQL中做什么?
我最近从使用SQL Server转到使用Oracle。有些特定于Oracle的函数让我感到困惑。当时的文档对我来说没有多大意义 如果我这样做:回归到底意味着什么。。。。进入你在Oracle SQL中做什么?,oracle,sql-returning,Oracle,Sql Returning,我最近从使用SQL Server转到使用Oracle。有些特定于Oracle的函数让我感到困惑。当时的文档对我来说没有多大意义 如果我这样做: INSERT INTO my_table (val2, val3, val4) VALUES (2, 3, 4) RETURNING val1 INTO 1 其中,表架构为: CREATE TABLE my_table ( val1 NUMBER NOT NULL, val2 NUMBER, val3 NUMBER, v
INSERT INTO my_table (val2, val3, val4)
VALUES (2, 3, 4)
RETURNING val1 INTO 1
其中,表架构为:
CREATE TABLE my_table (
val1 NUMBER NOT NULL,
val2 NUMBER,
val3 NUMBER,
val4 NUMBER,
CONSTRAINT pk_val1 PRIMARY KEY (val1)
)
它有什么作用?它返回什么?您发布的SQL语句没有意义。不能将列返回到常量中。将其返回到某种局部变量中 例如,假设您的表上有一个触发器,它使用触发器设置
val1
列的值。这将允许insert
语句成功,尽管没有为主键指定值。假设你有这样一个触发器,你做了
INSERT INTO my_table (val2, val3, val4)
VALUES (2, 3, 4)
RETURNING val1 INTO l_local_variable
将在
my_表中插入一行
,并将触发器存储在val1
列中的值返回到局部变量l_local_variable
Oracle returning子句在输出变量中返回指定的列值。从您的查询中,似乎您正在使用oracle auto increment来填充主键。所以
插入my_表(val2、val3、val4)
值(2、3、4)
将val1还原为1
这将在my_表中插入一行,将索引2,3,4中指定的变量值插入列val2、val3、val4中,并在索引1中指定的变量中返回生成的主键。您可以在sql server中执行
insert-in
…这就是为什么我的问题不是关于“插入”,而是关于“返回到”。谢谢!我希望Oracle的文档能够如此清晰。“索引2,3,4中指定的变量值”意味着存在绑定变量。如果“2”应该是:2,“3”应该是:3”,等等,那么这是有意义的。然而,正如所写的,这些是常量而不是绑定变量。