【发布时间】:2013-06-02 19:56:43
【问题描述】:
请帮忙,
每当我使用类似于以下的代码将值传递给参数时,我都会收到此错误:
parameters.paramByName('ParamVal1').value := trim(TextBox1.Text);
parameters.paramByName('ParamVal2').value := trim(TextBox2.Text);
因此,如果其中一个文本框为空白,则错误:
数据类型varchar和text在大于等于运算符中不兼容
出现。
可能出了什么问题?
按照以下建议运行 sqlprofiler 后
exec sp_executesql N'Select * from BLOtherChargeDetails
where Field1 = @P1 and Field2 >= @P2 and Field2 <= @P3 and
Field3 >= @P4 and Field3 <= @P5 and
Field4 >= @P6 and Field4 <= @P7 and
Field5 = @P8
Order By Field2, Field3
',N'@P1 varchar(50),@P2 text,@P3 varchar(5),@P4 text,@P5 varchar(5),@P6 varchar(8),@P7 varchar(8),@P8 smallint','Value_P1','','ZZZZZ','','ZZZZZ','20130401','20130611',0
go
【问题讨论】:
-
如果您提供有关参数是什么数据类型的更多信息会有所帮助,但错误很明显:您在某处直接比较
varchar和text,这是不可能的。如果您不确定这发生在哪里,使用 SQL Profiler 跟踪服务器上的执行可能会有所帮助。虽然由于text现在是deprecated,但您可能希望考虑改为(n)varchar(max)。
标签: sql-server-2008 delphi delphi-7