Welcome 微信登录

首页 / 数据库 / MySQL / PL/SQL窗口可执行,而存储过程内执行就报错

最近测试部遇到环境的问题,在我们开发这边开发,运行好的程序,到了测试部那里死活运行不过。应他们dba要求,过去检查。程序段如下:我用vsql变量将执行的动态sql打印查看如下:insert into tb_bil_acct_his_562
  (acct_id,
 acct_name,
 acct_nbr_97,
 cust_id,
 pay_method,
 branch_id,
 bank_acct,
 addr_id,
 crt_date,
 eff_date,
 exp_date,
 mod_date,
 eff_state,
 latn_id,
 addr_desc,
 post_code,
 mailing_flag,
 bank_acct_name,
 post_target_addr,
 empee_id,
 exch_id,
 month_id,
 serv_id,
 OPER_TYPE_ID,
 ACTION_DATE,
 ACTION_TYPE,
 HIS_ID,
 HAND_FLAG)
  select a.acct_id,
       a.acct_name,
       a.acct_nbr_97,
       a.cust_id,
       a.pay_method,
       a.branch_id,
       a.bank_acct,
       a.addr_id,
       a.crt_date,
       a.eff_date,
       a.exp_date,
       a.mod_date,
       a.eff_state,
       a.latn_id,
       a.addr_desc,
       a.post_code,
       a.mailing_flag,
       a.bank_acct_name,
       a.post_target_addr,
       a.empee_id,
       a.exch_id,
       a.month_id,
       a.serv_id,
       28,
       sysdate,
       1,
       seq_bil_acct_his_hisid_566.nextval,
       0
    from tb_bil_acct_566 a
 where a.acct_id = 5021006 and a.serv_id is null该段sql在单独的sql窗口可以顺利执行,但存储过程一执行就报ora-00942 table or view doesn"t exist开始纳闷了很久,后来查资料得知如果用户有dba角色,角色里包含的权限在存储过程里不会被继承;所以又单独对tb_bil_acct_566 ,seq_bil_acct_his_hisid_566.nextval等作了显式赋权,问题得以解决。rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题 http://www.linuxidc.com/Linux/2013-07/87890.htmSQLPLUS spool 到动态日志文件名 http://www.linuxidc.com/Linux/2013-03/80988.htmOracle SQLPLUS提示符设置 http://www.linuxidc.com/Linux/2012-10/73326.htm通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度 http://www.linuxidc.com/Linux/2011-07/38711.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址