0

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

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

谢谢

4

1 回答 1

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
于 2012-08-21T20:56:26.310 回答