【发布时间】:2018-10-06 09:20:22
【问题描述】:
如何使用光标将新列添加到现有表中?
例如,下面给出的问题的答案是什么?
编写一个游标程序,将在第 20 部门工作的人的薪水增加 5%。并将更新后的薪水插入一个名为 new_sal 的新列中
第二部分有问题。
【问题讨论】:
-
向我们展示您编写的代码,即第一部分。
-
“光标程序”?
如何使用光标将新列添加到现有表中?
例如,下面给出的问题的答案是什么?
编写一个游标程序,将在第 20 部门工作的人的薪水增加 5%。并将更新后的薪水插入一个名为 new_sal 的新列中
第二部分有问题。
【问题讨论】:
那将是动态 SQL,因为您不能通常在 PL/SQL 中执行 DDL。像这样的:
begin
execute immediate 'alter table your_table add new_sal number';
end;
【讨论】:
请注意,通过立即执行对表结构所做的更改不适用于同一 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;
【讨论】: