使用Delphi ADOStoredProc插入mySQL

问题描述 投票:0回答:1

我有一个包含以下两个表的 mySQL:

输入 ID 的人

员工输入 ID 和 StaffID(用于链接经理及其员工)

以下存储过程应在人员表中插入一行,前提是人员表中同时存在 ID 和 StaffID

    IF EXISTS (SELECT * FROM person WHERE ID = pStaffID) THEN
      INSERT INTO staff VALUES(pID, pStaffID, pDateOfEffect, pRemarks);
    END IF

Delphi 中的以下代码应该执行插入操作

procedure TfrmStaff.btnOKClick(Sender: TObject);
begin
  if (txtStaffID.Text <> '') then with DataModule1.ADOStoredProc1 do begin
    NullStrictConvert := false;
    ProcedureName:='Insert_Staff';
    Parameters.Clear;
    Parameters.CreateParameter('pID', ftInteger, pdInput, 50, ID);
    Parameters.CreateParameter('pStaffID', ftInteger, pdInput, 50, txtStaffID.Text);
    Parameters.CreateParameter('pDateOfEffect', ftDate, pdInput, 50, txtDateOfEffect.Text);
    Parameters.CreateParameter('pRemarks', ftString, pdInput, 100, txtRemarks.Text);
    ExecProc;
  end;
end;

我使用 43 和 45 作为两个 IDS,它们都存在于 person 表中。 出于测试目的,我将 txtDateOfEffect 和 txtRemarks 留空。

此操作失败并显示以下错误消息:

检查手册以了解在 '{ call 附近使用的正确语法 在第 1 行插入_Staff(?, ?, ?, ?)};

mysql delphi stored-procedures ado
1个回答
0
投票

尝试将TAdoStoredProc放在表单或数据模块上,设置连接和过程名称并调用ExecProc方法。如果成功,请使用此组件中的参数设置

© www.soinside.com 2019 - 2024. All rights reserved.