我有一个包含以下两个表的 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(?, ?, ?, ?)};
尝试将TAdoStoredProc放在表单或数据模块上,设置连接和过程名称并调用ExecProc方法。如果成功,请使用此组件中的参数设置