关于这个问题,我使用以下代码来执行保存在表中的选择查询。
begin
for rec in (select col1,col2,col3 from Table_1) loop
execute immediate 'insert into Table_3 SELECT DISTINCT ''' || rec.col1 ||''', CODE, '''|| rec.col2 ||''' FROM Table_2 WHERE col1 = ''' || rec.col1 || ''' AND ' || rec.col2;
commit;
end loop;
end;
选择非重复语句可能不返回任何来自Table_2的值。在当前代码中,当没有从Table_2返回任何值时,不会在Table_3中插入任何行。
我的目标是,在没有从Table_2返回任何行的情况下,在Table_3中插入 Null 值。就像下面的例子一样,因为 rec.col1 包含一个值。
+----------+-------+-------+
| 3col1 | 3col2 | 3col3 |
+----------+-------+-------+
| rec.col1 | Null | Null |
+----------+-------+-------+
我怎样才能做到这一点?
您可以使用以下函数:
insert into Table_3
with t as (
SELECT DISTINCT . . .
FROM Table_2
WHERE col1 . . .
)
select t.*
from t
union all
select ?, NULL, NULL, . . .
from dual
where not exists (select 1 from t);
您需要在. . .
中填写您的值。 您可能想学习将参数与execute immediate
一起使用。