这是我写的执行存储过程的接口函数。 在*_TLB中加的过程。 对应具体的存储过程的参数。用TStringList存储。 通过ParamStrings.Text:=ProcValues可以赋值给传入参数。 procedure TDMEPServer.ExectProc(const ProcName: WideString; const ProcValues: WideString); Var I:Integer; ParamStrings:TStringList; begin ParamStrings:=TStringList.Create; try SpcEPPro.StoredProcName:=ProcName; ParamStrings.Text:=ProcValues; For I:=0 to SpcEPPro.ParamCount-1 do Begin SpcEPPro.Params[I].Value:=ParamStrings.Strings[I]; End; SpcEPPro.ExecProc; Finally ParamStrings.Free; End; end;
其中SpcEPPro是执行存储过程的数据控件。
希望能给你启发://我不明白你这是什么意思ParamStrings.Text:=ProcValues;还有,你没有创建参数就使用了参数 try ADOSP.Active := False; ADOSP.ProcedureName := 'sp_codenamedel;1'; ADOSP.Parameters.Clear; //清空参数列表 with ADOSP.Parameters.AddParameter do //追加新参数 begin Name := '@Code'; DataType := ftString; Direction := pdInput; Size := 4; end; with ADOSP.Parameters.AddParameter do begin Name := '@TableName'; DataType := ftString; Direction := pdInput; Size := 40; end; with ADOSP.Parameters.AddParameter do begin Name := '@State'; DataType := ftInteger; Direction := pdInputOutput; end; if not ADOSP.Prepared then ADOSP.Prepared := True; ADOSP.Parameters.ParamByName('@Code').Value := ACode; ADOSP.Parameters.ParamByName('@TableName').Value := TableName; ADOSP.ExecProc; Result := ADOSP.Parameters.ParamByName('@State').Value; except end;参数的创建顺序与存储过程参数顺序要一致
在*_TLB中加的过程。
对应具体的存储过程的参数。用TStringList存储。
通过ParamStrings.Text:=ProcValues可以赋值给传入参数。
procedure TDMEPServer.ExectProc(const ProcName: WideString; const ProcValues: WideString);
Var
I:Integer;
ParamStrings:TStringList;
begin
ParamStrings:=TStringList.Create;
try
SpcEPPro.StoredProcName:=ProcName;
ParamStrings.Text:=ProcValues; For I:=0 to SpcEPPro.ParamCount-1 do
Begin
SpcEPPro.Params[I].Value:=ParamStrings.Strings[I];
End;
SpcEPPro.ExecProc;
Finally
ParamStrings.Free;
End;
end;
ADOSP.Active := False;
ADOSP.ProcedureName := 'sp_codenamedel;1'; ADOSP.Parameters.Clear; //清空参数列表
with ADOSP.Parameters.AddParameter do //追加新参数
begin
Name := '@Code';
DataType := ftString;
Direction := pdInput;
Size := 4;
end;
with ADOSP.Parameters.AddParameter do
begin
Name := '@TableName';
DataType := ftString;
Direction := pdInput;
Size := 40;
end;
with ADOSP.Parameters.AddParameter do
begin
Name := '@State';
DataType := ftInteger;
Direction := pdInputOutput;
end;
if not ADOSP.Prepared then ADOSP.Prepared := True; ADOSP.Parameters.ParamByName('@Code').Value := ACode;
ADOSP.Parameters.ParamByName('@TableName').Value := TableName;
ADOSP.ExecProc;
Result := ADOSP.Parameters.ParamByName('@State').Value;
except end;参数的创建顺序与存储过程参数顺序要一致
传入参数定义成TStringList类型。MyParams用来存储过程的参数。
如
MyParams.Add(ParamOne);
MyParams.Add(ParamTwo);
然后把MyParams对应于ProcValues传入函数。ProcValues定义为宽字符型,可以和TStringList型直接赋值。
如同
ParamStrings.Text:=ProcValues
就可以直接操作ParamString来读取传入的存储过程参数了。