日期:2014-05-17  浏览次数:20484 次

可以给数据库名设置个全局变量供引用吗?
我有很多视图,表都来源于其他数据库,如:
select * from anotherDateBase..Table1.Field
但anotherDateBase这个名字以后可能会改变,那为了不至于到时候我每个视图的脚本都要取改一次,
可否创建一个全部变量,保存数据库名称,Select * From @@DateBaseName..Table1.Field
日后无论如何变化,我只要重新给变量赋值就可以了。
或者是有其他的方法实现相同的功能?求赐教!

------解决方案--------------------
不能用全局变量,SQLServer的全局变量是系统内置的变量。可以考虑用拼接字符串,或者先通过sysdatabases来获取库名(这个获取的方式需要有一定的规则,如名字以another开头等)把库名先赋值给一个变量,然后在动态sql中使用。
------解决方案--------------------
就算是定义了全局变量,这个语句Select * From @@DateBaseName..Table1.Field也运行不了啊,也得用动态sql
------解决方案--------------------
存储过程以表名作参数,动态创建视图不可以吗?