首页 > 解决方案 > 尝试运行脚本以更改列类型时出现错误 PLS-00103

问题描述

我正在尝试执行以下查询:

BEGIN
FOR i in (SELECT CONSTRAINT_NAME, TABLE_NAME FROM user_constraints WHERE TABLE_NAME = 'DATA_MAPP') LOOP 
EXECUTE IMMEDIATE 'alter table '||i.table_name||' disable constraint '||i.constraint_name||'';
END LOOP;
END;

ALTER TABLE MAPP_SOA.DATA_MAPP ADD (DATA_MAPP_ID_RESERVA NUMBER(10)); 
UPDATE MAPP_SOA.DATA_MAPP SET DATA_MAPP_ID_RESERVA = DATA_MAPP_ID; 
UPDATE MAPP_SOA.DATA_MAPP SET DATA_MAPP_ID = NULL;
ALTER TABLE MAPP_SOA.DATA_MAPP MODIFY DATA_MAPP_ID VARCHAR(30 CHAR);
UPDATE MAPP_SOA.DATA_MAPP SET DATA_MAPP_ID = DATA_MAPP_ID_RESERVA;
ALTER TABLE MAPP_SOA.DATA_MAPP DROP COLUMN DATA_MAPP_ID_RESERVA; 

BEGIN
FOR i in (SELECT CONSTRAINT_NAME, TABLE_NAME FROM user_constraints WHERE TABLE_NAME = 'DATA_MAPP') LOOP 
EXECUTE IMMEDIATE 'alter table '||i.table_name||' enable constraint '||i.constraint_name||'';
END LOOP;
END;

更改列 DATA_MAPP_ID 的类型,保持列顺序。但它只有在 3 个块中执行时才有效。当我尝试执行整个脚本时,出现以下错误:

ORA-06550: linha 7, coluna 1: PLS-00103: Encontrado o símbolo "ALTER" 06550. 00000 - "line %s, column %s:\n%s" *原因:通常是 PL/SQL 编译错误。*行动:

如何“修复”它以运行整个脚本?

标签: sqldatabaseoracleplsql

解决方案


以斜杠结束 PL/SQL 块/

  ....
END;
/

推荐阅读