次の状況があります。
ストアド プロシージャの入力パラメータはデータベース名です。したがって、このパラメーターに依存して、クエリは別のデータベースで実行されます。すべてのクエリは同じです。以下は簡単な例です。
以下のコードのように IF...ELSE ステートメントを回避するために、ストアド プロシージャ (動的 SQL を使用する場合を除く) を記述する方法。
ALTER PROCEDURE [dbo].[usp_Item_GetAll]
(
@DBName nvarchar(255) = ''
)
AS
BEGIN
IF @DBName = 'ItemUsers'
BEGIN
SELECT
*
FROM ItemUsers.dbo.vW_DAM_ItemWithAttribute
END
ELSE IF @DBName = 'CollectionUsers'
BEGIN
SELECT
*
FROM CollectionUsers.dbo.vW_DAM_ItemWithAttribute
END