我正在尝试将查询中的数据从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/

10-13 02:05