有没有方法不指定用户名阿??

DotQuery 2006-05-14 03:39:27
例如我的用户名是myname
那么查询时为什么一定要 select * from myname.mytable
那么如果我的程序拿给别人用,而别人的用户名是不同的就不行了。

ORACLE为什么要把问题搞得那么复杂??为什么不能直接 select * from mytable 呢???
...全文
118 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
火龙岛主 2006-05-15
  • 打赏
  • 举报
回复
回答有些欠缜密,oracle的管理规则是指定用户的,而SQLserver是制定数据库的!
火龙岛主 2006-05-15
  • 打赏
  • 举报
回复
不指定也可以,你只要放大对方用户的权限就可以了!
例如 DBA
DotQuery 2006-05-15
  • 打赏
  • 举报
回复
那还是占用公共部分。
假如我的程序在一个服务器里,有多个实例,
那么在SqlServer里的做法是改变连接字符串,选择不同的database就OK了。
而Access也是这样,改变连接字符串,选择不同的文件就OK了。

而因为Oracle则无法作到这点,必须要在Sql语句中制定用户名,非常麻烦。

也许Oracle有相关的解决方案???例如 select * from @@user.mytable ?? 有没有 @@user 这个自动表示当前用户名的写法 ???

goldarcher2005 2006-05-15
  • 打赏
  • 举报
回复
可以,但必须建public同义词
create synonym public.table2 for myname.table2;
select 时可以不带用户名
DotQuery 2006-05-14
  • 打赏
  • 举报
回复
不行的。

例如我登陆为myname
create table table1 (field1 integer)
那么这个table1是属于sys的。 这是不应该的做法。
(无法理解Oracle为什么会这样!!!)
这时可以 select * from table1

如果
create table myname.table2 (field1 integer)
那么这个table是属于myname的,
并且select * from table2就会出错,一定要select * from myname.table2才行。

实际上,SqlServer分开database的做法就好很多。

现在我要做一个系统,sql语句都是固定好了。 不可能固定用户名在那些语句中吧??
如果要运行时要把用户名加到sql语句中,,那真是太糟糕了。

HAPPY_FROG 2006-05-14
  • 打赏
  • 举报
回复
例如用户名是myname
当使用myname用户登录的时候,可以直接用select * from mytable
但是用其他用户登录就要用 select * from myname.mytable了,因为其他人的帐号也可以建立mytable表啊

如果你的程序拿给别人用,别人的用户名是不同的的话就不行了。如果你非要用select * from mytable 让别的帐号的话,可以建立一个全局的同义词
create public synonym mytable for myname.mytable
以后,你就可以在别的用户下使用select * from mytable来查询了
DotQuery 2006-05-14
  • 打赏
  • 举报
回复
看来你不明白我的意思。

如果我以myname登陆,那么没有指定用户名的情况下,mytable当然要默认指myname.mytable
但是ORACLE并不支持这个这么基本的东西。

lee_billiy 2006-05-14
  • 打赏
  • 举报
回复
因为mytable是建在你的用户下,别人如果不是以你的用户登陆,select时当然要指定表所属的用户名啦,有的时候这也是为了系统权限的管理,有的用户只能select自己登陆用户下的表,而不能跨用户进行查询

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧