[英]Error code ORA-00933 for my stored procedure
我在创建的存储过程中收到以下错误消息:
ORA-00933: SQL 命令未正确结束
ORA-06512: 在第 11 行
我试过用谷歌搜索它,但找不到任何适用的东西,因为它告诉我要尝试消除任何“ORDER BY”。
declare
cursor a_tab is
select table_name
from all_tables
where owner = 'OFFERINGWORKSPACE'
and (TABLE_NAME like 'EBA_%' or TABLE_NAME = 'SURVEY_2.0');
v_tab_name varchar2(500);
begin
open a_tab;
loop
fetch a_tab into v_tab_name;
exit when a_tab%notfound;
EXECUTE IMMEDIATE 'delete ' || v_tab_name;
end Loop;
close a_tab;
open a_tab;
Loop
fetch a_tab into v_tab_name;
Exit when a_tab%notfound;
EXECUTE IMMEDIATE 'insert into ' || v_tab_name || '(select * from OFFERINGWORKSPACE.'||v_tab_name ||')';
End Loop;
Close a_tab;
End;
您的 cursor 查询中有一条线索:
... TABLE_NAME = 'SURVEY_2.0');
打破数据库 object 命名规则的时期:
- 非引号标识符只能包含来自数据库字符集的字母数字字符和下划线 (_)。 数据库链接可以包含句点 (.) 和“at”符号 (@)。
因此该表名必须是带引号的标识符。 因此,您需要在声明中引用它:
EXECUTE IMMEDIATE 'delete "' || v_tab_name || '"';
和
EXECUTE IMMEDIATE 'insert into "' || v_tab_name
|| '"(select * from OFFERINGWORKSPACE."'||v_tab_name ||"')';
db<>fiddle显示这些命令的错误(简化为一个模式,和 static SQL),以及如何添加双引号修复它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.