ORA-00903: 无效的表名
Posted
技术标签:
【中文标题】ORA-00903: 无效的表名【英文标题】:ORA-00903:invalid table name 【发布时间】:2016-12-21 12:20:16 【问题描述】:我在PLSQL
中有以下代码:
Declare
tablename varchar2(20):='emp';
drop_stmt varchar2(2000);
begin
drop_stmt:='drop table :1 ;';
--dbms_output.put_line(drop_stmt);
execute immediate drop_stmt using tablename;
end;
结果:
ORA-00903:无效的表名
ORA-06512:在第 8 行
但是当我跑步时:
drop table emp ;
它刚刚成功运行。这个错误的原因可能是什么?
【问题讨论】:
无法绑定标识符(表名、列名等)。如果您确实必须使用动态 SQL,则需要在执行某种验证后对它们进行硬编码(连接) @Barbaros 为什么要为这个问题创建一个新标签?特定的错误代码使标签很差,那些应该包含在正文中而不是作为标签。如果我们为每个错误代码创建一个标签,那么就会被它们所困扰。 @ErikvonAsmuth 嗨,还有其他标签以“ORA-”为前缀,这与那些没有什么不同。这使问题更加分类,不是吗..? @BarbarosÖzhan 见Do we really need a tag for every error code?。关于这些 ORA- 标签的敏感性存在一些争议。在解决之前,我认为没有必要增加这些数量。由于问题已在正文和标题中包含错误代码,因此对可查找性影响不大。 @ErikvonAsmuth 好的。 【参考方案1】:你必须使用这个:
drop_stmt:='drop table '||tablename; -- without ";" at the end of string
--dbms_output.put_line(drop_stmt);
execute immediate drop_stmt;
【讨论】:
谢谢,让我试试这个。以上是关于ORA-00903: 无效的表名的主要内容,如果未能解决你的问题,请参考以下文章
ORA-00903,ORA-06512,同时计算所有用户表的行数(动态 sql)
链接服务器“FDMEE_SIMPHONY”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-00903:无效表名”
pyspark 读取格式 jdbc 生成 ORA-00903: invalid table name 错误
SQL Server2019数据库查询所有数据库名表名表结构表字段主键方法演示,执行sql提示对象名‘user_tab_columns‘ ‘user_cons_columns‘ 无效问题解决