开发者

How to rename a constraint when I don't know the name

I need to rename a constraint in an Oracle databse, but I don't know the old name at design-time.

What I would like to do is this:

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; 开发者_StackOverflow中文版
end;

but I get the error message "PLS-00103: Encountered the symbol "ALTER" when expecting one of the following: begin case ".

How do I solve this problem?


Use dynamic 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;
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜