sql - 在delphi中存储过程

标签 sql delphi stored-procedures

我正在尝试从一些delphi代码中调用存储过程

我有一个像

procedure TDatabaseConnection.GetHourlyFiltergramLabSamples(StartTime, EndTime : TDateTime; Samples : TList<THourlyFilterCount>);
var
    StoredProc : TADOStoredProc;
begin
    StoredProc := TADOStoredProc.Create(nil);
    try
        StoredProc.Connection := Connection;
        StoredProc.ProcedureName := 'GetHourlyFiltergramLabSamples';

        StoredProc.Parameters.Refresh;

        StoredProc.Parameters.ParamByName('@StartTime').Value := startTime;
        StoredProc.Parameters.ParamByName('@EndTime').Value   := EndTime;

        StoredProc.Open;

        while not StoredProc.Eof do
        begin
            //Do stuff with the results here ... 

            StoredProc.Next;
        end;

    finally
        FreeAndNil(StoredProc);
    end;
end;


当我打到StoredProc.Open行时;

我得到一个错误


“ CommandText不返回结果集。”


我已经使用SQL Server Management Studio检查了存储过程是否确实返回了结果。



我发现这个问题似乎很气质。当然这不是数据库连接器中的错误吗?

我没主意了

最佳答案

我已经开放了几个月了。

我最好的解决方案是切换到使用FireDAC。使用FireDAC执行存储过程时,我没有遇到相同的问题。

相反,我使用TFDStoredProc类型运行存储过程

关于sql - 在delphi中存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27478194/

相关文章:

mysql - 使用 COUNT()、ORDER BY 和 WHERE user = ?同时地

mysql - 如何以编程方式确定 MySQL 关系类型 (1 :1, 1 :n, n :m) between tables?

mysql - 从 Rails 3 调用 MySQL 存储过程(返回结果集)时出错

mysql - SQL 触发器将值从表 A - 列 A 复制到表 B - 列 A IF 值在表 B 中是唯一的

MySQL - WHERE ATD 与 STD 的差值在负 10 分钟内

delphi - 使用sql语句insert into将blob文件写入数据库

delphi - 如何获取 Delphi IDE 的主窗体?

delphi - 当 BiDiMode= bdRightToLeft 和 Style= csDropDownList 且应用程序使用 VCL 样式时,TComboBoxEx 项目无法正确绘制

c# - MySql 存储过程参数转义

sql - 将包含 View 的代码转换为存储过程