日期:2014-05-17  浏览次数:20443 次

升级SQL2008后新建带参数存储过程执行时提示未发现参数
原来一直用sql2000,因SQL2000单进程内存2G限制的原因今年升级为SQL2008,数据库在2000下分离然后再附加到2008上,数据库升级后正常使用没有发现任何问题。
这两天增加了一条存储过程,很简单:
USE [ecas]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [DBO].[T_KD_QUERY] 
@T_LB varchar(20)=null
AS
select * from g_kd where T_LB=@T_LB   

在SSMS里调试没有问题,但是在DELPHI里用ADOStoredProc调用时提示:未发现参数@T_LB ,
这个进程如果不带参数在DELPHI里用ADOStoredProc调用没有问题,可以执行。
最怪的是,如果把同样的语句放在原来从SQL2000升级过来的存储过程里,在DELPHI里用ADO调用也没问题,太怪异了。百思不得其解呢。

------解决方案--------------------
没有官方说明证明2000升到2008不需要做任何修改,具体要看你ADOStoredProc的调用代码
------解决方案--------------------
具体的你的delphi调试一下,或者选择合适的驱动
------解决方案--------------------
提示:未发现参数@T_LB
--> 提示意思应该是未给参数@T_LB赋值.
------解决方案--------------------
DELPHI没玩过,不太清楚。
C#中调用存储过程的时候,预定义NULL可以忽略的,不知道DELPHI中是不是也可以忽略。
你给个NULL值看看是否可行。