我遇到以下程序的问题
CREATE PROCEDURE [dbo].[Q2_05] (@Ch1 nvarchar, @Ch4 nvarchar, @globalOptionCode nvarchar)
AS
BEGIN
SET NOCOUNT ON;
SELECT [2_05].Ch1, [2_05].Ch4, [2_05].GlobalOption, [2_05].Part, [2_05].[Key]
FROM [dbo.NV300Autostructure].[2_05]
WHERE ((([2_05].Ch1)=@Ch1) AND (([2_05].Ch4)=@Ch4) AND (([2_05].GlobalOption)=@globalOptionCode));
END
当我使用以下参数执行它时(' 5',' TH','。')它不会返回任何结果,但是在此过程中消除我发现修改条件行并将[2_05] .Ch4明确设置为' TH'像这样:
WHERE ((([2_05].Ch1)=@Ch1) AND (([2_05].Ch4)='TH') AND (([2_05].GlobalOption)=@globalOptionCode));
它返回数据库的一行。为什么会这样?
答案 0 :(得分:3)
您没有指定nvarchar
参数的大小。默认值为1个字符。
因此,当您使用参数时,该过程正在测试[2_05].Ch4)='T'
。