8

ユーザー入力に基づいて実行するストアドプロシージャを選択したい。何かのようなもの -

EXEC
CASE @InputParam 
  WHEN 'XML' THEN GetXMLData @ID, 'y'
  WHEN 'TABLE' THEN GetTableData @ID, 'y'
END

これはで行うことができますか、それとも構成CASEの使用を検討する必要がありIfますか?

4

4 に答える 4

12

IFここで構成を使用します。

IF @InputParam = 'XML'
    EXEC GetXMLData @ID, 'y'
IF @InputParam = 'TABLE'
    EXEC GetTableData @ID, 'y'
于 2012-04-13T15:34:53.053 に答える
3

このシナリオでは、SQL Serverで許可されていたとしても、IFの方が明確になると思います。

IF @InputParam = 'XML'
BEGIN
    exec GetXMLData @ID, 'y'
END
ELSE IF @InputParam = 'TABLE'
BEGIN
    exec GetTableData @ID, 'y'
END
于 2012-04-13T15:29:58.627 に答える
1

あなたはこのようにそれを行うことができます:

IF @InputParam = 'XML'
BEGIN
   EXEC GetXMLData @ID, 'y'
END

IF @InputParam = 'TABLE'
BEGIN
   EXEC GetTableData @ID, 'y'
END
于 2012-04-13T15:29:47.483 に答える
1

CASEを使用することもできますが、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)
于 2017-10-16T18:16:41.790 に答える