是这样的,小弟想通过ORALC来发送邮件,上网络上找一高人suk所写的存储过程PROCSENDEMAIL来使用,手工执行该存储过程是没有问题(当然是指小弟给用户赋权之后),但是在触发器中应用却不行.左查右查,发现应该是调用时的权限问题.理由如下:
我建立两个存储过程A和B,分别调用PROCSENDEMAIL,结果A成功,B失败.
A存储过程:
CREATE PROCEDURE p_test AUTHID CURRENT_USER IS
BEGIN
PROCSENDEMAIL('Data files','Case data from arcsight(7JxxolCMBABCvkTY6LSWNag==)','[email protected]','[email protected]','mail.trusts.cpcnet.com','25','0','','','/tmp/utl_file/Case_Info_7JxxolCMBABCvkTY6LSWNag==.csv','bit 7');
END p_test;
结果,执行成功.SQL> exec p_test;
PL/SQL procedure successfully completed.
SQL>
B存储过程:CREATE PROCEDURE p_test IS
BEGIN
PROCSENDEMAIL('Data files','Case data from arcsight(7JxxolCMBABCvkTY6LSWNag==)','[email protected]','[email protected]','mail.trusts.cpcnet.com','25','0','','','/tmp/utl_file/Case_Info_7JxxolCMBABCvkTY6LSWNag==.csv','bit 7');
END p_test;结果,执行失败.SQL> exec p_test
BEGIN p_test; END;*
ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at "TEST_USER.PROCSENDEMAIL", line 325
ORA-06512: at "TEST_USER.P_TEST", line 3
ORA-06512: at line 1到此,小弟大胆推测是在执行时,调用另一存储过程的"用户"(不知道这样理解对不对)没有足够的权限所导致.所以小弟想在此问以下问题:
1. 系统执行触发器,或在存储过程中调用其他存储过程时,默认的用户(指不使用AUTHID CURRENT_USER的情况下)是哪个??
2. AUTHID CURRENT_USER 能用在触发器上么??貌似不能用啊??
我建立两个存储过程A和B,分别调用PROCSENDEMAIL,结果A成功,B失败.
A存储过程:
CREATE PROCEDURE p_test AUTHID CURRENT_USER IS
BEGIN
PROCSENDEMAIL('Data files','Case data from arcsight(7JxxolCMBABCvkTY6LSWNag==)','[email protected]','[email protected]','mail.trusts.cpcnet.com','25','0','','','/tmp/utl_file/Case_Info_7JxxolCMBABCvkTY6LSWNag==.csv','bit 7');
END p_test;
结果,执行成功.SQL> exec p_test;
PL/SQL procedure successfully completed.
SQL>
B存储过程:CREATE PROCEDURE p_test IS
BEGIN
PROCSENDEMAIL('Data files','Case data from arcsight(7JxxolCMBABCvkTY6LSWNag==)','[email protected]','[email protected]','mail.trusts.cpcnet.com','25','0','','','/tmp/utl_file/Case_Info_7JxxolCMBABCvkTY6LSWNag==.csv','bit 7');
END p_test;结果,执行失败.SQL> exec p_test
BEGIN p_test; END;*
ERROR at line 1:
ORA-01031: insufficient privileges
ORA-06512: at "TEST_USER.PROCSENDEMAIL", line 325
ORA-06512: at "TEST_USER.P_TEST", line 3
ORA-06512: at line 1到此,小弟大胆推测是在执行时,调用另一存储过程的"用户"(不知道这样理解对不对)没有足够的权限所导致.所以小弟想在此问以下问题:
1. 系统执行触发器,或在存储过程中调用其他存储过程时,默认的用户(指不使用AUTHID CURRENT_USER的情况下)是哪个??
2. AUTHID CURRENT_USER 能用在触发器上么??貌似不能用啊??
郁闷的不行,六张表一起联合查询,每张表的数据都不下10万,其中有张表最大200多万,头有点大!!