我在应用服务器端调用一个存储过程,该存储过程有几个参数。问怎样才能把存储过程的参数从客户端传给存储过程?
解决方案 »
- 把窗体放入PageControl后,如何处理PageControl中From内的KeyDown事件
- 有一定挑战性的问题:DBGridEh如何设置,可以一行中显示两条记录?具体描述如下:
- 一个记录类型的变量能不能转成字符串存到数据库中?
- 请问这么扩大DELPHI应用服务器( 中间层)的用户联接数?(急)
- 初学delphi,想问问delphi中的属性到底有什么用?
- 请各位高手谈谈小组合作开发的经验,up也有分啊!
- 取网页内容成文本
- frmMain.qryMain.ExecSQL;与frmMain.qryMain.ExecSQL;什么区别??
- 如何获取DAGRID某列的内容
- 請教幾個tcp控件
- 一个Locate查询的问题
- 用FastReport怎么打印SQL Server数据库里面的用JPG格式存储的图片?
strSuccess:string;
begin
strSuccess:='';
with spProfCal do
begin
ParamByName('xCOMPID').AsString:=xCOMPID;
ParamByName('CURDATE').AsString:=DateToString(xCURDAT);
ExecProc;
//注意SUCCESS是传出参数,赋值是在存储过程内部进行的。
strSuccess:=ParamByName('SUCCESS').AsString;
if trim(strSuccess) = 'Y' then
Result:=True
else
Result:=False;
end;
end;
dm.ReportQuery.Params.ParamByName('id').Value :=tra_id;
dm.ReportQuery.Open;
dm.RptQuery.Params.ParamByName('id').Value :=tra_id;
dm.RptQuery.Open;
ReportQuery是ReportQuery
2 可以在客户端直接调用存储过程。clientdataset + datasetprovider + adoquery + adoconnection 采用这种方式的话,可以如下调用:
clientdataset1.Close();
clientdataset1.CommandText:=strSql;
clientdataset1.Execute();
如果后台数据库为oracle,strSql:="call temp.main(参数1,参数2,..参数n)";
如果后台数据库为SqlServer,strSql:="temp 参数1,参数2,...参数)";
当然,要将datasetprovider 设置为允许客户端执行sql.
OpenStoreProcedure(WorkMode:Integer,ComponentString :WideString,OleVariant &ReturnData,long &ExitCode);
参数说明:
1.WorkMode 是否存在返回数据集
2.ComponentString 控件字符流
3.ReturnData 返回的数据集
4.ExideCode 返回的状态标志1.在客户端将你的数据库操作控件设置好参数后,将该控件转化为 WideString ,传到服务器端;
2.在服务器端将客户端传过来的 ComponentString 还原成数据库操作控件,在服务器端执行它。
如果是存在返回数据集的操作的话,就只需要加个参数返回数据集在客户端进行接收;
建议你看看delphi里的例子 WriteComponent 或 ReadComponent ;