我正在编写一个存储过程,其中我有2个复杂的连接选择查询,它再次是外连接的。并且结果需要通过存储过程插入到另一个表中。
您是否发现以下存储过程的语法存在任何问题: 任何有关语法的帮助将不胜感激。
create or replace
PROCEDURE STATS_PROCEDURE(
column1 varchar2,
column2 varchar2,
column3 varchar2,
column4 varchar2,
) IS
BEGIN
insert into STATS_PRODUCT
column1 , column2 , column3 , column4)
select table1.column1, table1.column2 from
(SELECT column1, column2 from table_name) table1
FULL OUTER JOIN
(select column3, column4 from table_name) table2
on
table1.column1 = table2.column1 and table1.column2 = table1.column2
END;
提前致谢!
答案 0 :(得分:0)
在您的INSERT
子句中,您指定了4列,但在SELECT
语句中您只创建了2列,您需要修改查询以包含SELECT
中的所有4列,例如以下
BEGIN
INSERT INTO STATS_PRODUCT
( column1
,column2
,column3
,column4
)
SELECT table1.column1
,table1.column2
,table2.column3 --Added
,table2.column4 --Added
FROM (
SELECT column1
,column2
FROM table_name
) table1
FULL OUTER JOIN (
SELECT column3
,column4
FROM table_name
) table2
ON table1.column1 = table2.column1
AND table1.column2 = table1.column2
END;
作为替代方案,您可以使用WITH
子句重写,以便于阅读
WITH table1
AS (
SELECT column1
,column2
FROM table_name
),
table2
AS (
SELECT column1
,column2
,column3
,column4
FROM table_name
)
INSERT INTO STATS_PRODUCT
( column1
,column2
,column3
,column4
)
SELECT t1.column1
,t1.column2
,t2.column3
,t2.column4
FROM table1 AS t1
FULL OUTER JOIN table2 AS t2
ON t1.column1 = t2.column1
AND t1.column2 = t2.column2