我在数据库A中为数据库B建立了一个database link: test , 在plsql中
insert into tmenu(select * from tmenu@test);
这句单独执行是可以执行的。但是下面的就执行不成功了。 begin
delete from tmenu;
insert into tmenu(select * from tmenu@test);
commit;
exception
when others then
rollback;
raise;
end;错误信息是:PL/SQL: ORA-00942: 表或视图不存在
ORA-06550: 第 2 行, 第 29 列:
PL/SQL: SQL Statement ignored应该是tmenu@test这个字符串识别不了,不知道为什么。大家有没有碰到过,给小弟指点一下.........
insert into tmenu(select * from tmenu@test);
这句单独执行是可以执行的。但是下面的就执行不成功了。 begin
delete from tmenu;
insert into tmenu(select * from tmenu@test);
commit;
exception
when others then
rollback;
raise;
end;错误信息是:PL/SQL: ORA-00942: 表或视图不存在
ORA-06550: 第 2 行, 第 29 列:
PL/SQL: SQL Statement ignored应该是tmenu@test这个字符串识别不了,不知道为什么。大家有没有碰到过,给小弟指点一下.........
解决方案 »
- 都来看看这个SQL不能执行
- 求一SQL语句,如果可以马上结贴
- 百万数据性能如何优化
- mysql查询 表里面是这样的 id name 1 A,B,C 查询之后怎么像这样显示 id name 1 A 1 B 1 C
- 谁有oci.h文件,给我拷一份可以不?我邮箱:[email protected]
- 思雨是新手,请各位大侠指点一个问题,不要笑我哦。
- 帮我看一下,用exp数据库备份问题
- 对于违反完整性约束条件的操作如何进行事先定义处理?
- 如何将oracle 客户端 sql/net打包进安装程序(如installshield)
- 请教在oracle9i中有没有象sqlserver里面的dateadd()函数呀?
- JDBC连接ORACLE时怎么样在代码中修改连接用户名的登陆身份 如SYS必须以SYSDBA身份登陆
- 有关数据备份问题????
1 grant select on tmenu to username; --注意,这里的username是你db link登录远程数据库的用户。2 存储过程/函数中加上Authid Current_User,使得用户可以在存储过程中使用其role权限。
select owner,object_name from dba_objects where object_type='DATABASE LINK'
v_n number(10);
begin
select count(*) into v_n from tmenu@test;
dbms_output.put_line(v_n);
end; 这样报错吗?
这个报错 ,单独一句select * from tmenu@test是可以的。
那么你建立该dblink时,是不是要你提供一个登录用户名及密码?这里的用户名肯定在你远程数据库B里已经存在,假设它为u2。你现在要做的是,登录B库,grant select on tmenu to u2;
当然,你得有这个权限,比如是B库的SYSDBA,DBA,或者B库中tmenu表的拥有者。
v_n number(10);
begin
select count(*) into v_n from username.tmenu@test;
dbms_output.put_line(v_n);
end;
create public synonym remote_tmenu for tmenu@test;begin
delete from tmenu;
insert into tmenu(select * from remote_tmenu);
commit;
exception
when others then
rollback;
raise;
end;
加上后可以。谢谢。 再问下能不能通过赋权来实现呢?14lou的加同义词的方式不行,同义词转换不了,应该是同样的问题。