遇到一个问题,如下: ETL@RACTEST> begin 2 DBMS_LOCK.sleep(1); 3 end; 4 / PL/SQL procedure successfully completed. 但是 ETL@RACTEST> CREATE OR REPLACE PROCEDURE etl.pliutest 2 authid current_user 3 AS 4 BEGIN 5 DBMS_LOCK.sleep(1); 6 END; 7 / Warning: Procedure created with compilation errors. Elapsed: 00:00:00.07 ETL@RACTEST> ETL@RACTEST> show errors Errors for PROCEDURE ETL.PLIUTEST: LINE/COL ERROR -------- ----------------------------------------------------------------- 5/2 PL/SQL: Statement ignored 5/2 PLS-00201: identifier 'DBMS_LOCK' must be declared 同一个包,在相同的用户下的匿名程序块中可以执行,但是在存储过程中却没有权限执行,查了下资料,一些DBMS_开头的pkg在pl/sql中用到的时候,需要显示的执行 grant execute on dbms_xxxx to xxx 来赋下权限才可以。此外这个授权system用户是没有权限的,要sys 或者plsql / as dba登录才有权限授权。 授权以后可以看到: SYSTEM@RACTEST> select grantee,owner,table_name,grantor,privilege from dba_tab_privs where table_name like 'DBMS_LOCK'; GRANTEE OWNER TABLE_NAME GRANTOR PRIVILEGE -------------------- ---------- ---------- ---------- ---------- EXECUTE_CATALOG_ROLE SYS DBMS_LOCK SYS EXECUTE DMSYS SYS DBMS_LOCK SYS EXECUTE CTXSYS SYS DBMS_LOCK SYS EXECUTE EXFSYS SYS DBMS_LOCK SYS EXECUTE MDSYS SYS DBMS_LOCK SYS EXECUTE OLAPSYS SYS DBMS_LOCK SYS EXECUTE SYSMAN SYS DBMS_LOCK SYS EXECUTE ETL SYS DBMS_LOCK SYS EXECUTE 8 rows selected. 然后再次执行: SYSTEM@RACTEST> CREATE OR REPLACE PROCEDURE etl.pliutest 2 authid current_user 3 AS 4 BEGIN 5 DBMS_LOCK.sleep(1); 6 END; 7 / Procedure created. OK了!
转自:http://blog.sina.com.cn/s/blog_6ff05a2c0100mico.html
相关推荐
在实际应用中,我们需要确保安全性和权限控制,因为允许存储过程直接调用操作系统命令可能存在安全风险。因此,通常只会在受信任的环境中,并且在严格控制权限的情况下使用这种方法。同时,对存储过程进行充分的测试...
存储过程是预编译的SQL和PL/SQL语句集合,它们存储在数据库中并可以被调用执行。通过存储过程,我们可以封装复杂的业务逻辑,提高代码复用性和执行效率。 在Oracle中,访问接口通常需要使用UTL_HTTP或者DBMS_HTTP包...
Oracle 存储过程中任务和管道的应用 ...在 Oracle 存储过程中任务和管道的应用可以解决客户端调用存储过程后长时间没有反应的问题,并且可以实时了解存储过程的运行状态。这种方法可以提高系统的性能和可靠性。
数据库管理系统(DBMS)是计算机科学中的一个关键领域,它为组织、存储和检索数据提供了高效、可靠且灵活的方法。在“DBMS.rar_dbms_visual c_数据库管理_数据库管理系统_管理系统”这个压缩包中,我们可以看到两个...
4. 调用 DBMS_RANDOM.VALUE 函数生成随机数,并将其存储在临时表 tmp_2 中。 5. 将临时表 tmp_1 和 tmp_2 相关联,取得符合条件的随机记录。 6. 最后,删除临时表 tmp_1、tmp_2 和序列号 tmp_id。 例如,以下是使用...
首先,将XSL样式表存储在数据库中,然后通过PL/SQL过程调用DBMS_XSLPROCESSOR.CLOB2BFILE或CLOB2FILE将XML数据转换为所需样式。 5. **示例代码**: - `pro_test_info_gen.prc`可能是一个PL/SQL过程,用于生成测试...
`DBMS_OUTPUT`包提供了一个在PL/SQL中输出信息的方法,这对于调试存储过程非常有用。 综上所述,Oracle调用存储过程涉及到许多方面,从创建、调用到参数管理和异常处理,都需要对Oracle的PL/SQL语法和数据库管理有...
此外,为了能够通过存储在Oracle钱包中的凭据验证自己,用户还需要具有`use-client-certificates`或`use-passwords`权限。 #### 常量与数据类型 `UTL_HTTP`定义了一系列常量和数据类型来支持HTTP操作,例如`METHOD...
在IT领域,存储过程是数据库管理系统(DBMS)中预编译的SQL语句集合,它们可以被封装起来,以供以后重复使用。存储过程在提高应用性能、增强安全性、减少网络流量以及实现复杂的业务逻辑方面具有显著优势。本主题将...
- **存储过程作用:** 在Oracle中,存储过程可以用于封装这些规则和逻辑,使之成为可重用的组件。 **创建权限:** - **CREATE PROCEDURE权限:** 允许用户创建存储过程。 - **CREATE ANY PROCEDURE权限:** 允许...
- **实现方式**: 通过Oracle的Java存储过程支持,可以在存储过程中直接调用Java方法。 - **应用场景**: 实现复杂的数据处理逻辑,例如文件操作、外部系统集成等。 #### 七、Oracle高效分页存储过程实例 - **...
`IN`表示参数值在调用时传入,`OUT`表示在过程执行后传出。`AS`关键字后定义了过程体,其中包含了一条SQL语句,用于计算`param2`的值。 其次,实现存储过程涉及到编写和执行PL/SQL代码。PL/SQL是Oracle专有的编程...
在实际操作中,可以通过创建表、过程和调用`dbms_job`包的子程序来设置和管理作业。例如,可以创建一个每隔一分钟执行一次的作业,用于插入当前日期到表中。一旦不再需要,可以使用`Remove()`过程将其删除。 总之,...
在Oracle数据库管理中,DBMS_LOB是一个重要的包,提供了对大型对象(LOB)进行操作的一系列过程和函数。在1Z0-147考试的相关内容中,DBMS_LOB包是处理BFILE和CLOB等大型数据类型的关键工具。 1. DBMS_LOB包的用途:...
在数据库管理领域,存储过程是预编译的SQL语句集合,它们被封装在一起,以供将来调用。本文将围绕“sqlserverOracle小小存储过程小例子及API”这一主题,探讨SQL Server和Oracle数据库中存储过程的基础知识、创建与...
- **本地动态SQL与DBMS_SQL包**:在存储过程中,可以通过编写动态SQL语句或使用`DBMS_SQL`包来实现更灵活的数据处理。 #### 五、高级特性 - **动态查询**:存储过程可以支持简单的动态查询,这通常涉及到动态生成...