我有一个存储过程接受参数并返回具有匹配值的元组。如果没有传递参数,则返回表中的每个元组
create procedure getScore
(
@clinicCode varchar = null,
)
as
begin
select * from myTable
where ClinicCode = isnull(@clinicCode, ClinicCode)
end
所以我执行了它
exec getScore
exec getScore 'PSH'
他们都没有返回元组。 我确实尝试从myTable 中选择*,然后返回所有元组。不确定为什么来自...... isnull(表达,替换)的陈述搞砸了
答案 0 :(得分:2)
您需要更改
的声明@clinicCode varchar = null,
到你需要的实际尺寸。
类似
@clinicCode varchar(50) = null,
原因是
@clinicCode varchar
与
相同@clinicCode varchar(1)
然后将您的字段isnull(@clinicCode, ClinicCode)
仅转换为ClinicCode
看一下这个例子