【发布时间】:2015-10-06 00:42:45
【问题描述】:
我有一个 Sqlplus 脚本,我需要将它作为流程链的一部分执行,其目的是摆脱两个用户定义的对象:
myscript.sql
def tablespaceName=&1
drop type &tablespaceName.my_user_tab;
commit;
drop type &tablespaceName\.my_user_type;
commit;
/
执行:Sqlplus myDbUser/myDbPassword@myDbSID @myscript.sql TESTTABLESPACE
Sqlplus 引擎不知何故丢失了将表空间与对象名称分开的点字符:
old 1: drop type &tablespaceName.my_user_tab
new 1: drop type TESTTABLESPACEmy_user_tab
drop type TESTTABLESPACEmy_user_tab
*
ERROR at line 1:
ORA-04043: object TESTTABLESPACEMY_USER_TAB does not exist
如何让 Sqlplus 尊重该点并停止从脚本中删除它?
【问题讨论】:
-
"tablespacename" 在这种情况下似乎是一个非常具有误导性的参数名称 - 您的意思是“schema_name”吗?我假设您指的是拥有这两个特定对象的架构。
-
您将“表空间”与“模式”混淆了——这是两个完全不同的东西。
-
是的。我混淆了表空间和模式。现在到重点:如何让点分隔符停止消失。