三层结构中,客户端如何传递服务器端存储过程的参数 ( 积分: 100 )

  • 主题发起人 主题发起人 dream-kai
  • 开始时间 开始时间
D

dream-kai

Unregistered / Unconfirmed
GUEST, unregistred user!
三层结构中,在服务器端有一个存储过程,存储过程中有三个输入参数,我在客户端用clientdataset来连接这个存储过程,用fetch params可以获其参数,但运行有错误,总提示参数类型不一致或提供了不完整的信息,参数类型我都是一致了,不知道问题在那里?
 
三层结构中,在服务器端有一个存储过程,存储过程中有三个输入参数,我在客户端用clientdataset来连接这个存储过程,用fetch params可以获其参数,但运行有错误,总提示参数类型不一致或提供了不完整的信息,参数类型我都是一致了,不知道问题在那里?
 
begin
ADOStoredProc.ProcedureName :='你的存储过程名称';

ADOStoredProc.Parameters.Refresh ;
ADOStoredProc.Parameters[1].Value:='参数1';
ADOStoredProc.Parameters[2].Value :='参数2';
ADOStoredProc.Parameters[3].Value :='参数3';
ADOStoredProc.ExecProc ;
end;
 
存儲過程在中層實現﹐
你在客層要是取一個值﹐
就可以像正常取一樣。
如果你要取一個結果集﹐就用clientdataset。data來實現
我放了一個美容美 發的原碼在www.2ccc,com上﹐你下載看一下﹐什么都有呀
 
其實你可以在中間層寫個執行存儲過程的方法,然後在你的客戶層傳遞參數就可以。
例如:
服務端:
function TTmrpserver.apply_modifyrecord(const mtable, mkeyvalue,
msql: WideString): Integer;
var
tempsql:string;
begin
tempsql:='update '+mtable+' set ';
tempsql:=tempsql+msql+' where me_sn='+mkeyvalue;
result:=apply_modifyrecords(tempsql);
end;
客戶端:
function apply_modifyrecord(const mtable, mkeyvalue, msql: widestring): integer;
begin
try
create_adisp;
Result := P_adisp.apply_modifyrecord(mtable, mkeyvalue, msql);
if Result = 0 then
MessageBox(0, '記錄修改失敗,請稍後再試!', '提示', mb_ok);
finally
destory;
end;
end;
其實你的執行存儲過程也可以這樣寫的。只是稍微有些改動,兄弟試下吧。
 
多人接受答案了。
 
后退
顶部