gpt4 book ai didi

sql - 带有条件结果的存储过程

转载 作者:行者123 更新时间:2023-12-03 00:17:15 28 4
gpt4 key购买 nike

我想编写一个存储过程,其工作原理如下:

SELECT * from T where T.A = @a and T.B = @b

如果返回行,则返回这些行,如果没有,则返回

SELECT * from T where T.A = @a and T.B IS NULL

编辑:

感觉应该有一种方法来创建一个过程,使其运行一次第一个查询,并仅在必要时运行第二个查询。

结束编辑。

我能管理的最好的方法是以下,它(理论上)运行第一个查询两次,除非它被缓存:

IF EXISTS (SELECT * from T where T.A = @a and T.B = @b) THEN
SELECT * from T where T.A = @a and T.B = @b
ELSE
SELECT * from T where T.A = @a and T.B IS NULL

就其值(value)而言,这是在 Microsoft SQL Server 2008 中

最佳答案

这应该避免为存在性检查而进行额外的表访问。我不确定是否有更简洁的方法。

SELECT * from T where T.A = @a and T.B = @b


IF (@@ROWCOUNT = 0)
BEGIN
SELECT * from T where T.A = @a and T.B IS NULL
END

关于sql - 带有条件结果的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3168208/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com