使用表中的表达式作为没有结果的选择语句



关于这个问题,我使用以下代码来执行保存在表中的选择查询。

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一起使用。

相关内容

  • 没有找到相关文章

最新更新