关于use数据库的问题,简单,可惜我不知道怎么办!

leohongbo 2003-07-30 10:09:04
我想实现一个功能,就是先设定数据库名称,然后转换数据库,语句如以下,可是不能执行,exec起不了作用了!
declare @sql char(13)
declare @databasename char(6)
set @databasename = mybase

set @sql = 'use ' + @databasename
exec (@sql)

请教各位高手,要实现这个功能怎么办?
...全文
347 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
leohongbo 2003-08-03
  • 打赏
  • 举报
回复
请大家再帮帮忙啊!!怎么搞啊??
leohongbo 2003-08-01
  • 打赏
  • 举报
回复
???????
txlicenhe 2003-07-30
  • 打赏
  • 举报
回复
我早就试过如下:
declare @sql char(13)
declare @databasename char(6)
set @databasename = 'mybase'
set @sql = 'use ' + @databasename
exec (@sql)
可以运行,但结果是没有任何效果,相当于没有执行。
所以我一般用下面这种:
set @sql = 'select * from '+@databasename+'.dbo.yourtable'
exec (@sql)
愉快的登山者 2003-07-30
  • 打赏
  • 举报
回复
或者不使用USE,直接使用数据库名称:
set @sql = 'select * from '+@databasename+'.dbo.yourtable'
exec (@sql)
CrazyFor 2003-07-30
  • 打赏
  • 举报
回复
declare @sql char(13)
declare @databasename char(6)
set @databasename = 'mybase'

set @sql = 'use ' + @databasename
exec (@sql)

------

Transact-SQL 参考


USE
将数据库上下文更改为指定数据库。

语法
USE { database }

参数
数据库

是用户上下文要切换到的数据库的名称。数据库名称必须符合标识符的规则。

注释
USE 在编译和执行期间均可执行,并且立即生效。因此,出现在批处理中 USE 语句之后的语句将在指定数据库中执行。

用户在登录到 Microsoft® SQL Server™ 时,通常被自动连接到 master 数据库。除非为每个用户的登录 ID 设置了各自的默认数据库,每个用户都必须执行 USE 语句从 master 切换到另一个数据库。

若要将上下文更改为不同的数据库,用户必须有那个数据库的安全帐户。由数据库所有者提供此数据库的安全帐户。

权限
USE 权限默认授予那些由执行 sp_adduser 的 dbo 和 sysadmin 固定服务器角色,或由执行 sp_grantdbaccess 的 sysadmin 固定服务器角色以及 db_accessadmin 和 db_owner 固定数据库角色指派了权限的用户。如果目的数据库中存在来宾用户,则在该数据库中没有安全帐户的用户依然可以访问。


请参见

CREATE DATABASE

DROP DATABASE

EXECUTE

sp_addalias

sp_adduser

sp_defaultdb

使用标识符

©1988-2000 Microsoft Corporation。保留所有权利。
愉快的登山者 2003-07-30
  • 打赏
  • 举报
回复
动态使用USE,只能在动态执行的时候起作用,执行完毕就恢复原来。
可以这样,将后面的工作一并执行:
set @sql = 'use ' + @databasename+ ' select * from yourtable'
exec (@sql)
leohongbo 2003-07-30
  • 打赏
  • 举报
回复
表太多,那不麻烦死了,难道就没有办法了吗?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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