我用以下程序动态地调用后台过程为什么会出"list index out bound(1)"的错误
(用动态运行的原因是不想在form上出现过的控件)procedure TFrmExam.BitBtn1Click(Sender: TObject);
var
Q: TSQLStoredProc;
begin
Try
Q:=TSQLStoredProc.Create(application);
Q.SQLConnection:=FrmMain.SQLConnection1;
Q.Close;
Q.Params.Clear;
Q.StoredProcName := 'SD_GET_TABLE';
Q.Params.CreateParam(ftString ,'p_owner',ptinput);
Q.Params.ParamByName('p_owner').Value:='MR';
Q.ExecProc;
Finally
Q.Destroy;
End;
end;
(用动态运行的原因是不想在form上出现过的控件)procedure TFrmExam.BitBtn1Click(Sender: TObject);
var
Q: TSQLStoredProc;
begin
Try
Q:=TSQLStoredProc.Create(application);
Q.SQLConnection:=FrmMain.SQLConnection1;
Q.Close;
Q.Params.Clear;
Q.StoredProcName := 'SD_GET_TABLE';
Q.Params.CreateParam(ftString ,'p_owner',ptinput);
Q.Params.ParamByName('p_owner').Value:='MR';
Q.ExecProc;
Finally
Q.Destroy;
End;
end;
var
P1, P2: TParam;
S: TSQLStoredProc;
begin
with s do begin
s:=TSQLStoredProc.Create(self);
s.SQLConnection:=SQLConnection1;
StoredProcName := 'SD_GET_TABLE';--procedure
Params.Clear;
P1 := TParam.Create(Params, ptInput);--定义传入参数
try
Params[0].Name := 'P_OWNER'; --定义传入参数名称
ParamByname('P_OWNER').AsSTRING := 'MR';
ExecProc;
finally
P1.Free;
end;
end;
end;
-----------------------以下运行能通过但对于有out的procedure或者函数会出错。请有经验的人指点