ADO调用存储过程出错?(100分)

  • 主题发起人 主题发起人 SUB
  • 开始时间 开始时间
S

SUB

Unregistered / Unconfirmed
GUEST, unregistred user!
我在调用存储过程时,用的是adoquery控件,过程有四个参数,调用形式如下:
var s:string;
s:='execute storeproc_name '+''''+ p1+''''+','+''''+p2+''''+','+''''+p3+''''+','+''''+p4+'''';
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add(s);
adoquery.open;
其中第一,二参数为日期型,第三,四为字符型。当我给出四个参数时,正DELPHI中调用时出
现'invalid variant type conversion'错误,但我在SQL SERVER 的QUERY ALYER中查询却一点
问题没有。(存储过程正确),这是什么原因?是否与ADO控件有关?
 
SQLSERVER的日期可以用字符的形式来表示,所以你的第一、第二参数应使用datetostr()
函数来转换类型。
 
你用AdoQuery.ExecSQL代替AdoQuery.open试试
 
如果改用ADOStoredProc,可以解决吗?
 
不行,我在DELPHI中如果第三个或四个或参数在数据库中不存在时就会出错,不知是什么原因?
 
有两种办法:
1. 用ADOStoredProc,注意数据类型,要把日期型参数传递给第一、第二.
2. 用带参数的ADOQuery, 同样要注意参数类型.
 
接受答案了.
 
后退
顶部