使用多个 SQL 语句立即执行
Posted
技术标签:
【中文标题】使用多个 SQL 语句立即执行【英文标题】:Execute Immediate with multiple SQL Statements 【发布时间】:2011-11-14 23:27:33 【问题描述】:这是我的 PL/SQL。
execute immediate '
create table Alex_Test2(col1 varchar2(100));
/
drop table Alex_Test2;
/
';
在动态 SQL 中,创建一个表,然后立即删除。有趣的是,表已成功创建和删除,但出现错误。
Error starting at line 1 in command:
execute immediate '
Error report:
ORA-06550: line 1, column 17:
PLS-00103: Encountered the symbol "; END;" when expecting one of the following:
:= . ( @ % ;
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
table ALEX_TEST2 created.
table ALEX_TEST2 dropped.
Error starting at line 6 in command:
'
Error report:
Unknown Command
用户实际键入的 SQL 语句。我无法避免像;
和/
这样的符号。我该如何解决这个问题?或者我怎样才能绕过这个错误?
但是,我仍然需要保留日志。我希望日志只是
table ALEX_TEST2 created.
table ALEX_TEST2 dropped.
谢谢!
【问题讨论】:
【参考方案1】:您无法在执行查询字符串之前对其进行操作?如果你没有这个能力,那你有什么能力呢?
听起来您只需要在运行之前对查询字符串进行查找和替换。
【讨论】:
动态 SQL 由用户输入,我无法更改。我可以控制所有其他事情。我需要“查找和替换”什么? 好的,所以你只是说你不能阻止他们进入它们......但你可以在运行之前操纵他们的输入。在 SQL Server 中,我将使用替换函数:msdn.microsoft.com/en-us/library/ms186862.aspx。在您的 dbms 中可能是相同的,但如果不只是进行 Google 搜索,我相信您会比您再次询问和我为您查找并回复答案更快地找到它。以上是关于使用多个 SQL 语句立即执行的主要内容,如果未能解决你的问题,请参考以下文章