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

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

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

  1. CREATE PROCEDURE [dbo].[usp_Read_Details] @Identifier INT
  2. AS
  3. BEGIN
  4. CASE @Identifier
  5. WHEN 1
  6. THEN (
  7. SELECT Name
  8. FROM Furniture
  9. )
  10. WHEN 2
  11. THEN
  12. --select Name from Tables with some join and conditions in furniture
  13. WHEN 3
  14. THEN
  15. --select Name from Chairs with some join and conditions in furniture, TAbles
  16. END
  17. RETURN
  18. END;

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

bjp0bcyl

bjp0bcyl1#

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

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

相关问题