【问题标题】:Using Alter Statement from a Table in oracle在 oracle 中使用表中的 Alter 语句
【发布时间】:2021-12-06 12:03:48
【问题描述】:

我有一个表格,比如有一列包含这些数据

Dummy Column
Alter PACKAGE ABC COMPILE;
Alter PACKAGE CDE COMPILE;
Alter PROCEDURE ABC COMPILE;
Alter TRIGGER ABC COMPILE;

我想制作一个脚本,这样当我运行它时,它将逐行执行alter语句并执行DDL操作。

【问题讨论】:

  • 查看EXECUTE IMMEDIATE
  • 我尝试立即执行,但我如何为每一行使用?
  • 你想实现什么目标逐个编译?看看dbms_utility.compile_schema,它会为你编译所有对象。
  • 我不知道 dbms_utility.compile_schema。它轻松解决了我的问题。

标签: sql oracle plsql toad


【解决方案1】:

这样的事情应该可以工作,显然假设您在该虚拟列中存储了真实的 DDL 语句。

  • forloop当值不为空时覆盖列
  • ; 替换为空,以便使用execute immediate

例子

declare
vsql table.dummy_column%type;
begin
   for h in ( select dummy_column from table where dummy_column is not null )
   loop
       vsql := replace(h.dummy_column,';','');
       execute immediate vsql;
   end loop;
end;
/

 

【讨论】:

    猜你喜欢
    • 2011-08-19
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多