如何将变量用作数据库上下文?
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
由于
答案 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