ユーザー入力に基づいて実行するストアドプロシージャを選択します。ような何か -EXECでCASEを使用することができます
EXEC
CASE @InputParam
WHEN 'XML' THEN GetXMLData @ID, 'y'
WHEN 'TABLE' THEN GetTableData @ID, 'y'
END
これはCASE
で行うことができますか私はIf
構文を使用して検討すべき?
ユーザー入力に基づいて実行するストアドプロシージャを選択します。ような何か -EXECでCASEを使用することができます
EXEC
CASE @InputParam
WHEN 'XML' THEN GetXMLData @ID, 'y'
WHEN 'TABLE' THEN GetTableData @ID, 'y'
END
これはCASE
で行うことができますか私はIf
構文を使用して検討すべき?
あなたがここにIF
構文を使用する:あなたはCASEを使用することができ
IF @InputParam = 'XML'
EXEC GetXMLData @ID, 'y'
IF @InputParam = 'TABLE'
EXEC GetTableData @ID, 'y'
あなたはこのようにそれを行うことができます。私は、SQL Serverは、IFがより明確になることを許可された場合でもと思い、このシナリオでは
IF @InputParam = 'XML'
BEGIN
EXEC GetXMLData @ID, 'y'
END
IF @InputParam = 'TABLE'
BEGIN
EXEC GetTableData @ID, 'y'
END
。
IF @InputParam = 'XML'
BEGIN
exec GetXMLData @ID, 'y'
END
ELSE IF @InputParam = 'TABLE'
BEGIN
exec GetTableData @ID, 'y'
END
ていますが、EXEC(CMD)を使用する必要があります:
DECLARE
@cmd VARCHAR(200)
, @InputParam VARCHAR(5) ='TABLE'
, @ID INT =1
SELECT @cmd = (CASE @InputParam
WHEN 'XML' THEN 'GetXMLData '
+CONVERT(VARCHAR,@ID)+', '+CHAR(39)+'y'+CHAR(39)
WHEN 'TABLE' THEN 'GetTableData '
+CONVERT(VARCHAR,@ID)+', '+CHAR(39)+'y'+CHAR(39)
END)
EXEC(@cmd)
'CASE'ですがクエリ内のインライン評価に使用されます。それはフロー制御構造なので、 'IF'が必要です。 – JNK