我需要在Oracle数据库中重命名约束,但我不知道设计时的旧名称。
我想做的是:
declare
vOldName string;
begin
select CONSTRAINT_NAME
into vOldName
from user_constraints
where TABLE_NAME='AGREEMENT' and CONSTRAINT_TYPE='R';
alter table Agreement rename constraint vOldName to AGREEMENT_FK1;
end;
但我得到错误消息“PLS-00103:遇到符号”ALTER“当期待以下之一:开始案例”。
如何解决这个问题?
答案 0 :(得分:4)
使用动态PL / SQL:
declare
vOldName user_constraints.constraint_name%TYPE;
begin
select CONSTRAINT_NAME
into vOldName
from user_constraints
where TABLE_NAME='AGREEMENT' and CONSTRAINT_TYPE='R';
execute immediate 'alter table Agreement rename constraint '
|| vOldName || ' to AGREEMENT_FK1';
end;