【发布时间】:2019-05-15 06:49:43
【问题描述】:
我有一个要求,我需要在 PLSQL 块内创建 2 个表。目前我们使用EXECUTE IMMEDIATE。现在的问题是我需要创建 2 个表,但我只能使用一次 EXECUTE IMMEDIATE。
有没有办法在PLSQL 中创建表
1) 不使用EXECUTE IMMEDIATE
或 2) 在 EXECUTE IMMEDIATE 的单一用法中创建 2 个表
我尝试如下。以及一些跟踪和错误组合。但没有帮助。 期待如下。
EXECUTE IMMEDIATE
'BEGIN
CREATE TABLE NEW_TABLE1 AS
SELECT T1.*,
''Y'' PROCESS_FLAG
FROM TABLE1 T1
WHERE T1.PRIMAR_ID IN ( 300000005137174 ,300000005142005);
CREATE TABLE NEW_TABLE2 AS
SELECT T2.*,
''Y'' PROCESS_FLAG
FROM TABLE2 T2
WHERE T2.CODE IS NULL
AND T2.SECONDARY_ID IN
(SELECT DISTINCT(T_TEMP.PRIMAR_ID)
FROM NEW_TABLE1 T_TEMP
WHERE T_TEMP.PROCESS_FLAG = ''Y''
);
END' ;
【问题讨论】:
-
我正在尝试但遇到错误。
-
我尝试在单个字符串中创建 stmts 并使用一个 EXECUTE IMMEDIATE 执行。但是出错了。不确定是语法问题还是 try 本身有问题。
-
你尝试了什么,你能添加你的代码吗?
标签: sql oracle plsql plsqldeveloper