gpt4 book ai didi

sql - 带/不带传递参数的条件存储过程

转载 作者:行者123 更新时间:2023-12-02 08:39:57 27 4
gpt4 key购买 nike

我创建了一个存储过程,当没有传递任何参数时应该返回整个表。但如果 studentId 被传递,则返回她的详细信息。像这样

create procedure usp_GetStudents @studentId int = null
as
if (@studentId = null)
select * from Student
else
select * from Student where studentId = @studentId

输出

exec usp_GetStudents -- No records returned though there are records in the table


exec usp_GetStudents @studentId = null -- No records returned


exec usp_GetStudents @studentId = 256 -- 1 entry returned

只是想知道返回表中所有条目的语法/逻辑是否有任何错误?

谢谢

最佳答案

您正在尝试使用 = 测试 null , 一个 comparison operator .如果您使用的是 ANSI 空值,任何与 null 的比较是false .

在哪里@studentId任何值(或null)以下表达式都是false :

@studentId = null  -- false
@studentId > null -- false
@studentId >= null -- false
@studentId < null -- false
@studentId <= null -- false
@studentId <> null -- false

所以,为了测试 null你必须使用一个特殊的谓词, <strong>is null</strong> ,即:

@studentId is null

关于sql - 带/不带传递参数的条件存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17534621/

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