在应用程序服务器里用ADOConnection->ADOStoredProc->DataSetProvider
客户端该如何调用带参数(包括OutPut 的参数),
或者有什么好办法来实现调用带参数的存储过程?谢谢!
客户端该如何调用带参数(包括OutPut 的参数),
或者有什么好办法来实现调用带参数的存储过程?谢谢!
解决方案 »
- delphi: OleContainer显示excel表格,如何实现、修改提示、保存、打印预览、打印等?
- ado访问ACCESS数据库时,ADOdataset结合ADOCONNECTION速度快吗?
- 用什么报表控件可以打印出大对联???在一张大白纸上,要求可设置字体和大小。
- 寻求帮助
- 如何用BitBlt函数实现贴图时将源图像的背景色滤除?
- 我想我个字符串变量是类名,我怎样才能用这个字符串定义变量呢???(请教高手)
- 如何做一个可以远程登录的数据库应用程序?
- dbedit 的Bug!
- 免费pascal和C++:http://www.freepascal.org/和http://www.bloodshed.net/devpascal.html
- 关于TCP/IP的数据包捕获
- ===如何获取http连接上的参数值?===
- 数据转移的问题!
在*_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来读取传入的存储过程参数了。