有存储过程
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调用做相应修改,则运行正确。现在估计是时间变量的参数传入有误,不知原因何在?请各位高手指点。
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调用做相应修改,则运行正确。现在估计是时间变量的参数传入有误,不知原因何在?请各位高手指点。
不妨试试
Parameters.ParamByName('@StartTime').Value = ...另外,最好先定义一个TDate的变量来存放这个Value,可能好一些。
是从0开始索引的,但索引0是调用的默认返回值啊,可以在Object Inspector看到。并且我只有把第一个参数类型换成非Datetime的就能正常运行,如果索引不对的话肯定一团糟了。
难道就没有人知道吗?
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;
上述都去掉试试
我怎么就不行呢?我的系统Win2000,Delphi6。
在数据库中建立存储过程,然后用Delphi在面板上拖一个ADOStoredProc,设置连接属性,选择存储过程名。然后在一个button中写下上面的语句,一运行就报上面的错。
请问还有什么属性要设置吗?