执行存储过程以删除表时出错

Posted

技术标签:

【中文标题】执行存储过程以删除表时出错【英文标题】:Error while executing a stored procedure to drop a table 【发布时间】:2015-12-04 12:51:27 【问题描述】:

执行删除表的存储过程时出错。

我已经成功编译了程序(代码使用了动态 SQL)。 使用的工具是 SQL Developer。

CREATE OR REPLACE PROCEDURE sp_DROP(P_VAR IN VARCHAR2)
IS 
BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE'||P_VAR;  -- passing table via parameter
END;

但我在执行此过程时遇到错误:

EXECUTE sp_DROP('CON1'); -- i have made sure CON1 is a legit table. 

错误:

ORA-00950:无效的 DROP 选项 ORA-06512:在“HR.SP_DROP”,第 4 行 ORA-06512:在第 3 行 00950. 00000 - “无效的 DROP 选项” *原因: *行动:

感谢您的帮助。

【问题讨论】:

P_VAR 的开头是否包含空格?否则你会错过一个,因为在'DROP TABLE' 之后没有 是的,这是空白。谢谢你的帮助。 运行查询 select * from dba_objects where object_name = '' 并分享结果。 【参考方案1】:

在 drop table 的末尾添加一个空格。

CREATE OR REPLACE PROCEDURE sp_DROP(P_VAR IN VARCHAR2)
IS 
BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE '||P_VAR;  -- passing table via parameter
END;

【讨论】:

以上是关于执行存储过程以删除表时出错的主要内容,如果未能解决你的问题,请参考以下文章

SQLSERVER创建该存储过程时不会出错,但是执行存储过程时报错

sql server 2014怎么装的过程中出错

执行使用 PyMSSQL 引用链接服务器的存储过程时出错

尝试在 phpmyadmin 中执行 MYSQL 存储过程时出错

如何删除 MS SQL Server 存储过程中的 While 循环? [关闭]

ORA-01722 运行存储过程时出错