加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于Oracle中dbms_jobs的使用,异常:表或视图不存在

发布时间:2020-12-12 16:11:11 所属栏目:百科 来源:网络整理
导读:oracle 中dbms_jobs的使用介绍: 例子:创建两张表,A1,A2。建表语句如下: create table A1 ( id VARCHAR2(100) not null, rq VARCHAR2(50) ) tablespace TS_GGSJ pctfree 10 pctused 40 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextent

oracle 中dbms_jobs的使用介绍:


例子:创建两张表,A1,A2。建表语句如下:

create table A1
(
id VARCHAR2(100) not null,
rq VARCHAR2(50)
)
tablespace TS_GGSJ
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);

-- Create table
create table A2
(
id VARCHAR2(1000) not null,
rq VARCHAR2(50)
)
tablespace TS_GGSJ
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);

编写存储过程

CREATE OR REPLACE PROCEDURE proc_copy(r in varchar2)
AS
yestday varchar2(200);
BEGIN
yestday:=r;
delete from A2;
INSERT INTO A2
SELECT * FROM A1
where rq=yestday;
commit;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
END ;

创建dbms_jobs


这样dbms_jobs就创建好了。但是有时候在创建存储过程的时候可能涉及到不同用户之间的表查询。尤其是在存储过程中拼接动态的sql语句,在最后执行动态

sql语句的时候可能会提示表或视图不存在。考虑下为什么会出现这种提示呢,明明单独执行sql的时候不会报错。

最终发现,在动态执行sql的时候要给当前用户赋予权限。不过要显示的赋予权限,假设有u1和u2两个用户。在u1用户中需要访问u2的表,那么要使用plsql登录

u2用户。然后再u2中执行赋权限语句 grant select any table to u1,这样就解决了权限提示异常。此时也不再需要Authid Current_User ,这样基本上就没啥问题了。

抓紧上班喽

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读