1

多数の異なるストアド プロシージャのいずれかを呼び出し、それに指定されたパラメータに基づいてどれを選択するかを Sql Server で作成したいのですが、選択する構文を正しく取得できないようです。

現在試行中:

Begin
  Set nocount on;
  exec iif(param='individual', sp_FindIndividualRespondents, 
      iif(param='org', sp_FindOrgRespondents, sp_FindGroupRespondents))
End

これは現在私に言っています:「param」付近の構文が正しくありません。

私はここを見てきました:ストアド プロシージャ パラメーターに基づく条件付き where 句? 、しかし、状況に合わせてそのコードを変更する方法がわかりません。

ストアド プロシージャにパラメータを提供し、それを使用して別のストアド プロシージャを選択して実行するにはどうすればよいですか?

4

2 に答える 2

1
BEGIN
SET NOCOUNT ON;

   DECLARE @queryToRun NVARCHAR(128) = 'EXECUTE ';

   SELECT @queryToRun = @queryToRun + CASE
                                         WHEN param = 'individual'
                                            THEN 'sp_FindIndividualRespondents'
                                         WHEN param = 'org'
                                            THEN 'sp_FindOrgRespondents'
                                         ELSE 'sp_FindGroupRespondents'
                                      END

    EXECUTE sp_executesql @queryToRun;
END

動的 SQL が必要ない場合 (この例では必要ありません)、値を確認して適切なストアド プロシージャを実行するだけです。

BEGIN
SET NOCOUNT ON;

   IF param = 'individual'
      EXECUTE sp_findIndividualRespondents;
   ELSE IF param = 'org'
      EXECUTE sp_FindOrgRespondents;
   ELSE
      EXECUTE sp_FindGroupRespondents;
END
于 2012-10-26T05:44:14.477 に答える
1
BEGIN 
 IF param = "individual" 
   EXEC Sp_findindividualrespondents; 

 IF param = "org" 
   EXEC Sp_findorgrespondents; 

 IF param = "Nothing" 
   EXEC Sp_findgrouprespondents; 
END 

また

BEGIN 
 IF param = "individual" 
   EXEC Sp_findindividualrespondents; 
 ELSE IF param = "org" 
   EXEC Sp_findorgrespondents; 
 ELSE 
   EXEC Sp_findgrouprespondents; 
END 
于 2012-10-26T05:45:39.543 に答える