0

変数をdbコンテキストとして使用するにはどうすればよいですか?

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クエリに含まれます。

編集:マスター内のアイテムにアクセスするために必要な編集に基づいて、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 に答える