使用游标在plsql中更改表

时间:2018-04-25 19:33:42

标签: sql oracle plsql cursor

如何使用游标将新列添加到现有表中?

例如,下面给出的问题的答案是什么?

编写一个游标程序,将在部门20中工作的工资增加5%。并将更新的工资插入一个名为new_sal的新工作

我遇到了第二部分的问题。

2 个答案:

答案 0 :(得分:0)

那将是动态SQL,因为你不能通常在PL / SQL中执行DDL。像这样:

begin
  execute immediate 'alter table your_table add new_sal number';
end;

答案 1 :(得分:0)

请注意,通过execute immediate在表结构中所做的更改不适用于同一plsql块中的直接sql语句。因为更新语句将找不到列new_sal。

BEGIN
  EXECUTE immediate 'alter table tab_name add new_sal number';
  UPDATE tab_name SET new_sal = salary + (salary * 0.05) ;
END;

正确的方法是

BEGIN
  EXECUTE immediate 'alter table tab_name add new_sal number';
  EXECUTE IMMEDIATE 'UPDATE tab_name SET new_sal = salary + (salary * 0.05)' ;
END;