当我尝试使用此过程更改过程MY_PRC时,为什么会出现“ ORA-00940:无效的ALTER命令”?

问题描述

CREATE OR REPLACE PROCEDURE COMPILE_OBJECT(my_type VARCHAR2,my_name VARCHAR2,my_package_part VARCHAR2 := NULL) IS
    v_text VARCHAR2(500) := 'ALTER :my_type :my_name COMPILE :my_package_part';
BEGIN
    --try alter objects
    EXECUTE IMMEDIATE v_text USING my_type,my_name,my_package_part;   
END;

解决方法

就像Sayan所说的那样,是这样的:

SQL> CREATE OR REPLACE PROCEDURE compile_object (
  2     my_type           VARCHAR2,3     my_name           VARCHAR2,4     my_package_part   VARCHAR2 := NULL)
  5  IS
  6     v_text  VARCHAR2 (500);
  7  BEGIN
  8     v_text :=
  9           'alter '
 10        || my_type
 11        || ' '
 12        || DBMS_ASSERT.sql_object_name (my_name)
 13        || ' compile '
 14        || my_package_part;
 15
 16     EXECUTE IMMEDIATE v_text;
 17  END;
 18  /

Procedure created.

SQL> EXEC compile_object('procedure','p_roles',null);

PL/SQL procedure successfully completed.

SQL>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...