我对Oracle 10g中的UTL_MAIL包有点麻烦,并且想知道是否有人有任何解决方案?
我以SYSMAN身份连接到我的数据库并加载以下两个脚本;
@C:\ ORACLE \产品\ 10.2.0 \ DB_1 \ RDBMS \管理员\ utlmail.sql
@C:\ ORACLE \产品\ 10.2.0 \ DB_1 \ RDBMS \管理员\ prvtmail.plb
我设置了SMTP服务器;
ALTER SYSTEM SET smtp_out_server ='mymailserver.fake:25'SCOPE = BOTH;
我授予用户所需的权限;
GRANT执行ON utl_mail TO MYUSER;
但是如果我连接到“MYTABLESPACE”(MYUSER存在),如果我参考UTL_MAIL.SEND,我会收到以下错误;
PLS-00201:必须声明标识符'UTL_MAIL.SEND'
如果我用SYSMAN作为前缀(SYSMAN.UTL_MAIL.SEND),它可以工作,但我不想这样做,因为包含此调用的此过程不知道安装脚本的表空间。
有没有办法安装这些脚本以便它们可以普遍访问,并且不需要执行SYSMAN前缀?
干杯,
克里斯
答案 0 :(得分:5)
我很确定公共同义词是唯一的区别。
SELECT * FROM ALL_SYNONYMS WHERE OWNER = 'PUBLIC' and table_name LIKE 'UTL%'
将确认或拒绝
答案 1 :(得分:4)
听起来你需要为包创建一个PUBLIC SYNONYM ..
CREATE PUBLIC SYNONYM UTL_MAIL FOR SYSMAN.UTL_MAIL;
答案 2 :(得分:1)
尝试ALTER SYSTEM SET smtp_out_server='mymailserver.fake:25' SCOPE=BOTH;
作为运行该过程的用户而不是sys。
即。
连接到MYTABLESPACE as MYUSER
并运行alter session
希望很清楚
答案 3 :(得分:-2)
以sys身份登录并运行脚本