【发布时间】:2021-01-27 08:35:34
【问题描述】:
我在尝试创建 Oracle 存储过程时遇到问题。我在下面提供代码的骨架。
Create or replace procedure "SP_UPDATE_DATA" AS
BEGIN
WITH CTE1 AS
(
SELECT A.F1, A.F2 ,B.F3 FROM A, B WHERE A.X1=B.X1
),
CTE2 AS
(
SELECT A.F1,A.F2,C.F5
FROM
CTE1 A,C
WHERE A.F1=C.F1
)
UPDATE TABLE MAIN
SET XYZ=CTE2.F2
FROM
CTE2
WHERE
MAIN.F1.CTE2.F2
当我尝试编译程序时出现错误
SELECT 中预期有 INTO 子句
虽然我实际上没有使用任何变量,也没有返回任何内容,也没有选择任何内容,但仍然面临错误。不确定它是否与 CTE 有关。
需要您的意见才能达成解决方案。
提前致谢。
【问题讨论】:
-
Update .. from在 oracle 中的语法不正确。 -
您可能需要
merge而不是update -
谢谢,您可以假设 UPDATE ..FROM 语法是正确的,但仍然显示上述错误。
-
因为需要将select语句的结果返回到变量中,或者PL/SQL代码中的游标中。
-
"您可以假设 UPDATE ..FROM 语法是正确的"。是的,我们可以做到,问题是(与许多假设一样)这是一个完全错误的假设。 Oracle 不支持“Update...From”语法。
标签: oracle stored-procedures plsql