我想根据用户输入选择要执行的存储过程。像 -
这样的东西EXEC
CASE @InputParam
WHEN 'XML' THEN GetXMLData @ID, 'y'
WHEN 'TABLE' THEN GetTableData @ID, 'y'
END
可以使用CASE
完成,还是应该考虑使用If
构造?
答案 0 :(得分:9)
您想在此处使用IF
构造:
IF @InputParam = 'XML'
EXEC GetXMLData @ID, 'y'
IF @InputParam = 'TABLE'
EXEC GetTableData @ID, 'y'
答案 1 :(得分:2)
在这种情况下,我认为即使SQL Server允许,IF也会更清晰。
IF @InputParam = 'XML'
BEGIN
exec GetXMLData @ID, 'y'
END
ELSE IF @InputParam = 'TABLE'
BEGIN
exec GetTableData @ID, 'y'
END
答案 2 :(得分:1)
你可以这样做:
IF @InputParam = 'XML'
BEGIN
EXEC GetXMLData @ID, 'y'
END
IF @InputParam = 'TABLE'
BEGIN
EXEC GetTableData @ID, 'y'
END
答案 3 :(得分:0)
您可以使用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)