如何使用游标将新列添加到现有表中?
例如,下面给出的问题的答案是什么?
编写一个游标程序,将在部门20中工作的工资增加5%。并将更新的工资插入一个名为new_sal的新工作
我遇到了第二部分的问题。
答案 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;