【问题标题】:Altering table in plsql using cursor使用游标更改plsql中的表
【发布时间】:2018-10-06 09:20:22
【问题描述】:

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

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

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

第二部分有问题。

【问题讨论】:

  • 向我们展示您编写的代码,即第一部分。
  • “光标程序”?

标签: sql oracle plsql cursor


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    请注意,通过立即执行对表结构所做的更改不适用于同一 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      相关资源
      最近更新 更多