oracle - PLS-000428 error Oracle stored procedure with CTE
问题描述
I am stuck in an issue while trying to create an Oracle stored procedure. I am providing the skeleton of the code below.
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
When I am trying to compile the procedure I am getting error
AN INTO CLAUSE IS EXPECTED IN SELECT
Though I am actually not using any variable, also not returning anything not selecting anything, still facing the error. Not sure if it has to do something with the CTE.
Need your input to reach a resolution.
Thanks in advance.
解决方案
它应该看起来像这样:
CREATE OR REPLACE PROCEDURE sp_update_data
AS
BEGIN
UPDATE MAIN
SET XYZ = ( 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
)
SELECT CTE2.F2
FROM CTE2
WHERE MAIN.F1=CTE2.F2
);
END sp_update_data;
/
推荐阅读
- javascript - Apollo useLazyQuery 在完成时监听
- node.js - MongoDB $expr 获取指定年份的记录
- reactjs - react-select : 选项 `isSelected` 始终为真
- java - Java:我尝试用双精度和 for 循环制作一个数组,但它不起作用
- python - 在计算偏差时如何保存集群分配并防止它们在下一次迭代中被覆盖?
- python - 将 DLL 永久添加到 python
- python - 我有一个我无法弄清楚的 numpy 索引错误?
- python - 在 Python3 中存储列表迭代会产生意想不到的结果
- python-3.x - Matplot Lib 图形在左侧被截断,标签未显示
- c# - Azure SDK for .NET 中的 IotHub 设备管理