我有以下存储过程:
ALTER PROCEDURE [dbo].[SearchProfile]
(
@Type varchar,
@Name varchar
)
AS
SELECT *
FROM dbo.Profiles
WHERE ((@Type IS NULL)
OR (dbo.Profiles.Type = @Type))
AND ((@Name IS NULL)
OR (Name = @Name));
当我执行以下操作时:
exec SearchProfile NULL, NULL
它返回所有行,但是当我将其中一个NULL更改为某个值时...
exec SearchProfile 'abc', NULL
它不会返回任何内容。
我做错了什么? 提前谢谢。
答案 0 :(得分:3)
您需要指定变量的长度。
如果你跑
DECLARE @Type varchar = 'abc'
SELECT @Type
返回
a
因此将其更改为
@Type varchar(50),
@Name varchar(50)