通过变量更改数据库上下文

时间:2012-08-21 20:47:30

标签: database tsql

如何将变量用作数据库上下文?

Create Procedure [dbo].[prName] (@dbname varchar(25)) as
begin
use master
some sql
<!--  I need to use master for some functions stored in master -->


use @dbname

exec('SELECT column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE [TABLE_CATALOG] = '+@dbname+' and TABLE_NAME=table123')

end

GO

由于

1 个答案:

答案 0 :(得分:1)

我想您可能想要使用以下内容:

CREATE Procedure [dbo].[prName] (@dbname varchar(25)) as
begin
   exec('select top 5 * from '+@dbname+'.yourSchema.yourTable')
end

存储过程中不允许USE语句。如果传入数据库名称,则不需要USE语句,数据库名称将包含在sql查询中。

编辑:根据你需要访问master中的项目的编辑,你需要做的就是执行你的sql,指定master的需要只使用完全限定的sql。

CREATE Procedure [dbo].[prName] (@dbname varchar(25)) as
begin

    select * from master.INFORMATION_SCHEMA.TABLES

    exec('select top 5 * from '+@dbname+'.yourSchema.yourTable')
end