sql - PLS-00201 : identifier UTIL_FILE must be declared

标签 sql oracle

我正在尝试将查询中的数据从安装在 Windows Server 2008 机器上的 Oracle Enterprise Express 导出到 csv 文件中。

我找到了这个解决方案:

http://asktom.oracle.com/pls/asktom/f?p=100:11:::::P11_QUESTION_ID:235814350980

它基本上编写了一个函数并使用 UTIL_FILE 对象来创建和写入文件并添加分隔符。

当我尝试在 Oracle SQL Developer 中创建函数时收到以下错误:

PLS-00201: identifier UTIL_FILE must be declared. 

当我运行以下命令时:
select owner, object_type from all_objects where object_name = 'UTL_FILE' 

结果是:
OWNER      Object Type
---------  -----------
PUBLIC     SYNONYM

编辑:

运行:
GRANT EXECUTE ON UTL_FILE TO PUBLIC

给出:
Error starting at line 2 in command:
GRANT EXECUTE ON UTL_FILE TO PUBLIC
Error report:
SQL Error: ORA-00942: table or view does not exist
00942. 00000 -  "table or view does not exist"
*Cause:    
*Action:

问题是什么?

最佳答案

对我来说似乎缺乏特权。常PUBLIC用户有 EXECUTE授予该包的特权,但该特权可能会被撤销。

您可以检查是否PUBLIC通过发出以下查询获得该特权:

SELECT * FROM all_tab_privs WHERE grantee = 'PUBLIC' AND table_name = 'UTL_FILE';

如果没有返回任何行,请尝试将执行权限授予您登录的用户或 PUBLIC ,作为某些特权用户,例如 SYS :
GRANT EXECUTE ON SYS.utl_file TO user_name;

编辑

您必须在登录时授予权限,例如,SYS用户。

关于sql - PLS-00201 : identifier UTIL_FILE must be declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20106162/

相关文章:

c# - 如何从oracle存储过程中读取不同类型的输出参数?

oracle - 附加到 Oracle 用户定义的集合类型

oracle - 为什么在尝试获取序列的当前值时会收到错误 ORA-08002?

sql - Entity Framework 性能下降

mysql - 如何将数字枚举列转换为tinyint?

sql - SQL 选择列表中的 bool 表达式

sql - 多于一列的 MySql

sql - 将标识列添加到 Snowflake 中的现有表?

oracle - 如何从存储过程中使用Grails中的输出参数获取返回值?

Java 程序在命令提示符下编译并运行成功,但在 myeclips 中却无法编译和运行?