ADOStoredProc 参数传入时的错误?

csdn95566 2002-10-08 12:01:35
有存储过程
procedure [dbo].test
@Starttime datetime,
@Duration integer,
@DiffTime integer=0 output
AS
set @DiffTime=@Duration*2
GO

在Delphi6中用ADOStoredProc 调用如下:
with form1.ADOStoredProc1 do
begin
Parameters.Refresh;
Parameters[1].DataType:=ftDatetime;
Parameters[1].Direction:=pdInput ;
Parameters[1].Value:=strtodatetime('2001-11-27 00:14:00');

Parameters[2].DataType:=ftInteger;
Parameters[2].Value:=5;
Prepared;
ExecProc;
a:=Parameters[3].Value;

一运行就在最后一条语句出错,提示如下:
Project Project1.exe raised exception class EOleException with message '[Microsoft][ODBC SQL Server Driver]Optional feature not implemented'.Process stopped.Use Step or Run to contine.

如果把存储过程中的第一个参数去掉或把其类型改为非datetime型,ADO调用做相应修改,则运行正确。现在估计是时间变量的参数传入有误,不知原因何在?请各位高手指点。
...全文
47 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
格兰特杨 2002-10-08
  • 打赏
  • 举报
回复
Paramters的顺序可能是从0开始的
不妨试试
Parameters.ParamByName('@StartTime').Value = ...

另外,最好先定义一个TDate的变量来存放这个Value,可能好一些。
csdn95566 2002-10-08
  • 打赏
  • 举报
回复
to blueshu()
我怎么就不行呢?我的系统Win2000,Delphi6。
在数据库中建立存储过程,然后用Delphi在面板上拖一个ADOStoredProc,设置连接属性,选择存储过程名。然后在一个button中写下上面的语句,一运行就报上面的错。
请问还有什么属性要设置吗?
blueshu 2002-10-08
  • 打赏
  • 举报
回复
我按你的试一下没问题啊
返回a为10
过程名你写的没
blueshu 2002-10-08
  • 打赏
  • 举报
回复
Parameters.Refresh;
Parameters[1].DataType:=ftDatetime;
Parameters[1].Direction:=pdInput ;
Parameters[1].Value:=strtodatetime('2001-11-27 00:14:00');

Parameters[2].DataType:=ftInteger;
Parameters[2].Value:=5;
上述都去掉试试
BrainA 2002-10-08
  • 打赏
  • 举报
回复
不建议使用ADOStoreProc,我曾经碰到过好多问题,参数数量的获取,参数类型的获取都是问题。建议使用ADODataSet,在ADODataSet中调用存储过程比较方便。
csdn95566 2002-10-08
  • 打赏
  • 举报
回复
to bisc_sunny(嶈亴橆湻鑰鑷甯櫨鏅笢鐨勯潚) guorui_wh(Re)
是从0开始索引的,但索引0是调用的默认返回值啊,可以在Object Inspector看到。并且我只有把第一个参数类型换成非Datetime的就能正常运行,如果索引不对的话肯定一团糟了。
难道就没有人知道吗?
guorui_wh 2002-10-08
  • 打赏
  • 举报
回复
是从0开始索引的

同意楼上的

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧