sql - 尝试运行脚本以更改列类型时出现错误 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 编译错误。*行动:
如何“修复”它以运行整个脚本?
解决方案
以斜杠结束 PL/SQL 块/
....
END;
/
推荐阅读
- powershell - 将文档写入 Domino 数据库的 Powershell 脚本
- python - Python - openpyxl wb.save() 抛出 TypeError
- arrays - 将字符串添加到空数组会给出“NAN”
- sql - 同一列的多个 LEFT JOINS
- angularjs - 不使用 acquireTokensilent 获取令牌,但使用 acquireTokenpopup Msal-browser 获取令牌
- azure - 如何正确配置 Azure DNS 以将所有流量路由到 CDN 配置文件
- javascript - 如何将回调函数(带有http请求)从父组件传递到Angular中的子组件
- python - django:外键约束失败
- powershell - 在当前 PowerShell 终端中启动程序
- ubuntu - ubuntu 20.04 上的 riscv64-linux-gnu-gdb