sqlserver2000中:sql语句(use 数据库名变量) 如何写? ( 积分: 100 )

  • 主题发起人 主题发起人 dfoversky
  • 开始时间 开始时间
D

dfoversky

Unregistered / Unconfirmed
GUEST, unregistred user!
如题:想写段 sql 语句:
结果 use 数据库名 那行,用不了变量,不知道有什么函数没有-_-!!

declare @dbname nvarchar(10)
set @dbname='test'
use @dbname
select * from tablename

用 use [@dbname] 也不行
 
select * from dbname..tablename
 
declare @dbname varchar(10)
set @dbname='test'
exec('use '+ @dbname)
看看这样行不行,如果楼主仅仅是需要使用另一个数据库得表得话可以按xianguo说的引用
dbname..tablename
 
exec('use '+ @dbname)
执行后,无效果。当前数据库没变。
 
好像是不行,建議採取別的方法吧!我測試例子:
--use pubs 可以
declare @db_name varchar(20)
set @db_name='pubs' print @db_name
exec('use '+ @db_name)--不行pubs
--伺服器: 訊息 208,層級 16,狀態 1,行 1
--無效的物件名稱 'sales'。
exec('select * from sales')
 
这里提供一个解决方案:
使用Exec(ute)语句来改变当前数据库,不过要注意的是,数据库环境的更改只在Execute语句结束前有效,所以你必须把后面的语句和Execute放到一起。
Example:
exec('use '+ @dbname + ' select * from tablename')
 
declare @dbname nvarchar(10),@m_find varchar(500)
set @dbname='test'

Select @m_find='Select * FROM '+QUOTENAME(@dbname,'[')
EXEC(@m_find)
定义一可变字符串变量,把SQL语句格式后加入到该变量。EXEC执行即可
 
同意gyh75,
declare @db_name varchar(20)
set @db_name='pubs'

exec ('use '+@db_name+' select * from sales')
 
谢谢各位鼎力相助..
 
接受答案了
 
接受答案了
 
后退
顶部