例如用户名是myname 当使用myname用户登录的时候,可以直接用select * from mytable 但是用其他用户登录就要用 select * from myname.mytable了,因为其他人的帐号也可以建立mytable表啊如果你的程序拿给别人用,别人的用户名是不同的的话就不行了。如果你非要用select * from mytable 让别的帐号的话,可以建立一个全局的同义词 create public synonym mytable for myname.mytable 以后,你就可以在别的用户下使用select * from mytable来查询了
不行的。例如我登陆为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语句中,,那真是太糟糕了。
可以,但必须建public同义词 create synonym public.table2 for myname.table2; select 时可以不带用户名
但是ORACLE并不支持这个这么基本的东西。
当使用myname用户登录的时候,可以直接用select * from mytable
但是用其他用户登录就要用 select * from myname.mytable了,因为其他人的帐号也可以建立mytable表啊如果你的程序拿给别人用,别人的用户名是不同的的话就不行了。如果你非要用select * from mytable 让别的帐号的话,可以建立一个全局的同义词
create public synonym mytable for myname.mytable
以后,你就可以在别的用户下使用select * from mytable来查询了
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语句中,,那真是太糟糕了。
create synonym public.table2 for myname.table2;
select 时可以不带用户名
假如我的程序在一个服务器里,有多个实例,
那么在SqlServer里的做法是改变连接字符串,选择不同的database就OK了。
而Access也是这样,改变连接字符串,选择不同的文件就OK了。而因为Oracle则无法作到这点,必须要在Sql语句中制定用户名,非常麻烦。也许Oracle有相关的解决方案???例如 select * from @@user.mytable ?? 有没有 @@user 这个自动表示当前用户名的写法 ???
例如 DBA