我希望根据用户的输入选择要执行的存储过程。类似于 -
EXEC
CASE @InputParam
WHEN 'XML' THEN GetXMLData @ID, 'y'
WHEN 'TABLE' THEN GetTableData @ID, 'y'
END
这可以用 CASE
实现吗?还是我应该考虑使用 If
结构?
我希望根据用户的输入选择要执行的存储过程。类似于 -
EXEC
CASE @InputParam
WHEN 'XML' THEN GetXMLData @ID, 'y'
WHEN 'TABLE' THEN GetTableData @ID, 'y'
END
这可以用 CASE
实现吗?还是我应该考虑使用 If
结构?
你需要在这里使用IF
结构:
IF @InputParam = 'XML'
EXEC GetXMLData @ID, 'y'
IF @InputParam = 'TABLE'
EXEC GetTableData @ID, 'y'
IF @InputParam = 'XML'
BEGIN
exec GetXMLData @ID, 'y'
END
ELSE IF @InputParam = 'TABLE'
BEGIN
exec GetTableData @ID, 'y'
END
IF @InputParam = 'XML'
BEGIN
EXEC GetXMLData @ID, 'y'
END
IF @InputParam = 'TABLE'
BEGIN
EXEC GetTableData @ID, 'y'
END
IF
而不是CASE
...这是无效的语法。 - JNKIF
。我之前是在使用 Sybase-ASE 语法 :P - aF.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)