Ada*_*gen 5 sql sql-server stored-procedures sql-server-2008
我想编写一个类似这样的存储过程:
SELECT * from T where T.A = @a and T.B = @b
Run Code Online (Sandbox Code Playgroud)
如果返回行,则返回这些行,否则返回
SELECT * from T where T.A = @a and T.B IS NULL
Run Code Online (Sandbox Code Playgroud)
编辑:
感觉应该有一种方法来创建一个过程,使其运行第一个查询一次,并仅在必要时运行第二个查询.
结束编辑.
我能管理的最好的是跟随,它(理论上)运行第一个查询两次,除非缓存它:
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
Run Code Online (Sandbox Code Playgroud)
值得一提的是,这是在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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5809 次 |
| 最近记录: |