SQL Server参数化SELECT过程不返回结果,但在显式设置时返回记录

时间:2014-04-28 12:48:06

标签: sql sql-server

我遇到以下程序的问题

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));

它返回数据库的一行。为什么会这样?

1 个答案:

答案 0 :(得分:3)

您没有指定nvarchar参数的大小。默认值为1个字符。

因此,当您使用参数时,该过程正在测试[2_05].Ch4)='T'

相关问题