You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle PL/SQL Developer跨Schema建表遇ORA-00906左括号缺失错误

解决跨Schema创建对象类型表时的ORA-00906错误

兄弟,看你贴出来的建表语句明显是半截的啊!这肯定会触发ORA-00906“缺少左括号”的错误——毕竟语句没写完,数据库根本没法解析。咱们一步步来搞定这个问题:

1. 先拿到完整的DDL脚本

你用dbms_metadata.getddl()拿脚本的时候,大概率没获取到完整内容。试试这么做:

  • 先执行这条语句开启分号输出,避免脚本被截断:
    DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM, 'SQLTERMINATOR', TRUE);
    
  • 然后分别获取对象类型和表的完整DDL:
    -- 获取源Schema里的对象类型DDL
    SELECT DBMS_METADATA.GETDDL('TYPE', 'IBS_S_DOCUMENT_T_1', '你的源Schema名称') FROM DUAL;
    
    -- 获取源Schema里的表DDL
    SELECT DBMS_METADATA.GETDDL('TABLE', 'IBS_S_DOCUMENT_1', '你的源Schema名称') FROM DUAL;
    
    复制输出的时候要确保把所有内容都拷下来,包括末尾的分号和存储参数那些。

2. 给目标Schema加权限

要在目标Schema里用源Schema的对象类型建表,目标Schema必须有该类型的EXECUTE权限。切换到源Schema的会话,执行授权:

GRANT EXECUTE ON "源Schema"."IBS_S_DOCUMENT_T_1" TO "目标Schema";

3. 修正建表语句的关键细节

你原来的语句有几个小问题,调整后应该是这样的(替换成你的实际Schema名称):

CREATE TABLE "目标Schema"."IBS_S_DOCUMENT_1" 
OF "源Schema"."IBS_S_DOCUMENT_T_1" (
  CONSTRAINT "XPK_S_DOCUMENT" PRIMARY KEY ("CODE") 
  USING INDEX (
    CREATE UNIQUE INDEX "目标Schema"."XPK_S_DOCUMENT" ON "目标Schema"."IBS_S_DOCUMENT_1" ("CODE")
    -- 这里要保留原DDL里的存储参数,比如TABLESPACE、PCTFREE之类的
  )
);

重点注意:

  • 表和索引都要归属到目标Schema,别写成源Schema了
  • 对象类型必须指定源Schema的名称,不然目标Schema找不到这个类型
  • 确保所有括号都匹配,语句完整无截断

4. 验证执行

把完整的DDL复制到PL/SQL Developer的目标Schema会话里,先检查一遍有没有语法错误,比如括号没闭合、关键字拼写错,然后执行就行。如果还是有问题,把完整的报错信息和DDL贴出来,咱们再细查。

内容的提问来源于stack exchange,提问作者Sherzodbek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:02