4

データベース名のみが異なる次のクエリを検討してください(同じサーバー上)

Select * from sampledev.dbo.Sample
Select * from sampleqa.dbo.Sample

上記のクエリは手順の一部です。プロシージャを実行する必要があるたびに、正しいデータベースを参照していることを確認する必要があります (そうでない場合は名前を変更します)。

データベース名をパラメータとしてストアド プロシージャに渡したい。問題は、それが可能かどうかです。はいの場合、どのように?

4

2 に答える 2

3

を使用してこれを実現できますsp_executesql

DECLARE @Database   NVARCHAR(255),
        @Query      NVARCHAR(MAX)

SET @Database = 'Database'
SET @Query = N'SELECT * FROM ' + @Database + '.dbo.Table'

EXEC sp_executesql @Query
于 2013-09-25T20:17:55.240 に答える
0

次のような簡単なもの:?

CREATE PROC GetData
(
    @DatabaseName VARCHAR(255)
)
AS
BEGIN

IF @DatabaseName = 'sampledev'
    SELECT * FROM sampledev.dbo.Sample
ELSE IF @DatabaseName = 'sampleqa'
    SELECT * FROM sampleqa.dbo.Sample

END

使用する:

exec GetData 'sampledev'

結果


開発データ

(1 行が影響を受けます)

exec GetData 'sampleqa'

結果


品質データ

(1 行が影響を受けます)

于 2013-09-25T20:17:44.943 に答える