Mysql Delphi ADOStoredProcess调用不带参数的过程并在调用后捕获它们

Mysql Delphi ADOStoredProcess调用不带参数的过程并在调用后捕获它们,mysql,delphi,stored-procedures,parameters,Mysql,Delphi,Stored Procedures,Parameters,我想使用ADOStoredProcedure对象从数据库调用存储过程 存储过程返回3个varchar255:已处理、记录集大小和剩余记录 然后我想将返回的值捕获到delphi端的一个变量中 我目前正在使用MySQL和Delphi7 存储过程本身在MySQL中运行良好,因此这方面没有任何问题 目前,delphi中的代码是: ADOWizconSP.ProcedureName := 'proc_moveToWizconTemp'; ADOWizconSP.Parameters.Refresh; A

我想使用ADOStoredProcedure对象从数据库调用存储过程

存储过程返回3个varchar255:已处理、记录集大小和剩余记录

然后我想将返回的值捕获到delphi端的一个变量中 我目前正在使用MySQL和Delphi7

存储过程本身在MySQL中运行良好,因此这方面没有任何问题

目前,delphi中的代码是:

ADOWizconSP.ProcedureName := 'proc_moveToWizconTemp';
ADOWizconSP.Parameters.Refresh;

ADOWizconSP.Parameters.ParamByName('@processed').Value := processed;
ADOWizconSP.Parameters.ParamByName('@record_set_size').Value := record_set_size;
ADOWizconSP.Parameters.ParamByName('@records_remaining').Value := records_remaining;
ADOWizconSP.ExecProc;
          lb_wizconValues.Items.Add(IntToStr(ADOWizconSP.Parameters.ParamByName('@processed').Value));
          lb_wizconValues.Items.Add(IntToStr(ADOWizconSP.Parameters.ParamByName('@record_set_size').Value));
          lb_wizconValues.Items.Add(IntToStr(ADOWizconSP.Parameters.ParamByName('@records_remaining').Value));
我遇到了一个错误:

ADOWizconSP: 'Parameter @processed@not found'
谁能帮我实现我在这里的目标

亲切问候,


Jordan:

Delphi参数不使用@,所以请删除它们。新手错误:但是我遇到了另一个问题:它说:[Mysql][odbc 5.3a驱动程序][mysqld-5.0.41-community-nt]OUT或INOUT参数1用于例程taglogging.proc_moveToWizconTemp在触发器之前不是一个变量或新的伪变量。该过程不接受任何参数,但返回3,我不知道如何捕获返回的3个参数:@KenWhite我不知道,因为我所知道的关于您的过程及其参数的所有信息都是您在问题中发布的内容。我没办法知道更多。所以如果你的参数是输出的,为什么你要给它们赋值呢?您已经调用了Refresh,它应该确定参数类型是输入还是输出,或者两者都是。只需调用ExecProc并获取过程之后返回的内容。在ExecProc方法调用之前的3行中无论如何都不会捕获它们。您正在尝试设置它们的值。如果它们是输出的(刷新最有可能检测到),那么您将在尝试将值存储到输出参数时出错。删除ExecProc之前的这3行,并从下面3行中的参数名称中删除@chars,我认为您应该没事。你可以做你正在做的事,如果你的情妇在/不在的话。