博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
oracle 创建同义词
阅读量:6086 次
发布时间:2019-06-20

本文共 1121 字,大约阅读时间需要 3 分钟。

hot3.png

创建同义词对于我的项目来说, 主要是为了 jdbc 写SQL的时候, 不需要在 表的前面加上 用户名称。 因为 SQL已经写好了,改起来麻烦,开发起来也麻烦。 即, A 用户要访问B 用户的表,不用加上 b.xxx 的表名。 可是百度了一通, 说得 看起来乱乱的, 对于菜鸟来说, 看起来懵了,还有什么鬼视图的。。看不懂。 只好自己尝试了。 比如 ehr 用户要访问 bms 用户下的表 CPCUSER 如果不使用同义词 即要使用 :

SELECT * FROM bms.CPCUSER WHERE username='xx'

怎么 创建同义词呢, 是在 ehr 用户 下面 创建 同义词的, 即 首先 ehr 用户要有 查询 bms 用户的表的权限,也要有 创建 同义词的权限。、 如果没有请给他创建权限。 或者使用 sys 更高一级的用户去创建同义词, 如果不行,就创建 公用的 public 的同义词。 由于我的 ehr 是有 dba的权限的, 所以我就 在 ehr 下创建同义词了,因为 就是 bms有 dba的权限,创建同义词并没有效果,也许我创建的并不是 public 的同义词吧 使用 ehr 用户 登录 ,执行 下面的创建同义词的语句:

create synonym CPCORG for bms.CPCORG ;

这时候可以在 使用ehr 用户下执行下面的SQL 查询了,不用加上 用户的名称了:

SELECT * FROM CPCORG  WHERE  ORGNAME='电热公司'

如果比较多表怎么办呢? 比如:

select 'CREATE SYNONYM '||table_name||'  FOR BMS.'||table_name ||';' from ALL_TABLES where owner = 'BMS' 	AND table_name NOT LIKE 'TMP%' 

将查询出来的 结果复制 再 批量执行创建同义词 即可。 相同的方法,也是可以 批量 将 对应表给 ehr 用户 授权查询 等权限的

当前 如果当前 的用户没有创建或删除 同义词的权限怎么办? 使用 dab 或者 sys 权限的 账户登录 执行 下面的 同义词 语句即可

DROP SYNONYM EHR.CPCORG; -- 删除EHR 用户的 同义词		                --为 ehr用户 创建 bms表cpcorg的同义词 		create synonym EHR.CPCORG for bms.CPCORG ;

转载于:https://my.oschina.net/u/2419285/blog/882461

你可能感兴趣的文章
Flux OOM实例
查看>>
07-k8s-dns
查看>>
Android 中 ListView 分页加载数据
查看>>
oracle启动报错:ORA-00845: MEMORY_TARGET not supported on this system
查看>>
Go方法
查看>>
Dapper丶DapperExtention,以及AbpDapper之间的关系,
查看>>
搞IT的同学们,你们在哪个等级__那些年发过的帖子
查看>>
且谈语音搜索
查看>>
MySQL数据库导入导出常用命令
查看>>
低版本Samba无法挂载
查看>>
Telegraf+Influxdb+Grafana构建监控平台
查看>>
使用excel 展现数据库内容
查看>>
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
什么样的企业可以称之为初创企业?
查看>>