sql—使用不同的select语句根据存储过程中的开关大小写返回表

uwopmtnx  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(254)

我需要根据一个数字从不同的表格中进行选择。

CREATE PROCEDURE [dbo].[usp_Read_Details] @Identifier INT
AS
BEGIN
    CASE @Identifier
            WHEN 1
                THEN (
                        SELECT Name
                        FROM Furniture
                        )
            WHEN 2
                THEN
                    --select Name from Tables with some join and conditions in furniture
            WHEN 3
                THEN
                    --select Name from Chairs with some join and conditions in furniture, TAbles
            END

    RETURN
END;

基本上,它是基于用户在前端所选内容的组合框填充。首先选择家具,然后,根据家具、椅子的可用性,然后根据家具和椅子的选择,选择table等。如何在一个sp中实现这一点?我知道是否有其他人会做这项工作,但我只想知道是否有一个开关的情况下,或任何其他替代方案的情况下可用。

bjp0bcyl

bjp0bcyl1#

您可以使用left join执行以下操作,并根据 @identifier 价值观。这将使查询变得简单,而不是 IF ELSE 逻辑。

SELECT 
CASE WHEN @identifier = 1 THEN F.Name
     WHEN @identifier = 2 THEN c.Name
     WHEN @identifier = 3 THEN t.Name
     ELSE 'Not Found' END as Names
FROM Furniture AS F
LEFT OUTER JOIN Chairs AS C ON c.parentID = f.Id 
LEFT OUTER JOIN Tables AS T ON t.ParentID = c.ID

相关问题