如何使用PL / SQL为多个表创建ALTER READ ONLY?

我想知道如何通过创建library(broom) results = tidy(model) results$expB = exp(results$Estimate) 使用PL/SQLALTER表到READ ONLY。到目前为止,我尝试了以下代码块:

PROCEDURE
cgb114 回答:如何使用PL / SQL为多个表创建ALTER READ ONLY?

如果您要ALTER当前模式中的所有表,请按以下步骤创建该过程

SQL> CREATE OR REPLACE PROCEDURE UPDATE_PR_READ_ONLY IS
  v_sql VARCHAR2(150);
BEGIN
  FOR c IN
           (
            SELECT *
              FROM user_objects o
             WHERE o.object_type  
           )
  LOOP
    v_sql := 'ALTER TABLE '||c.object_name||' READ ONLY';
    EXECUTE IMMEDIATE v_sql;
  END LOOP;          
END;
/

如果您只想ALTER仅使用三个单独的表,请按以下步骤创建该过程

SQL> CREATE OR REPLACE PROCEDURE UPDATE_PR_READ_ONLY IS
  v_sql VARCHAR2(150);
  v_tab owa.vc_arr;
BEGIN
  v_tab(1):='PROJECTS'; v_tab(2):='REQUEST_ACTIVITIES'; v_tab(3):='PROJ_REC_SERVICES';
  FOR i in 1..3
  LOOP
    v_sql := 'ALTER TABLE '||v_tab(i)||' READ ONLY';
   EXECUTE IMMEDIATE v_sql;
  END LOOP;              
END;
/
通过遍历设置为那些表名的数组值来

无论创建什么过程,都调用为

SQL> EXEC UPDATE_PR_READ_ONLY;

请注意

    END的最后PROCEDURE之后添加
  • 过程名称是 可选,如果添加,则该名称应与PROCEDURE名称相同。 因此,UPDATE_PROJ_REQU_READ_ONLY应该转换为 UPDATE_PR_READ_ONLY
  • 表达式FOR EACH ROW用于数据库触发器,但不用于数据库触发器 存储过程
  • 在第一行的过程名称之后添加关键字ISAS, 更可取的是在OR REPLACE关键字之后使用CREATE选项
  • 不使用DDL不能发出EXECUTE IMMEDIATE语句 存储过程中
,

ALTER TABLE table_name只读;

本文链接:https://www.f2er.com/2449948.html

大家都在问