调用存储过程问题! (50分)

  • 主题发起人 主题发起人 zhengyoukang
  • 开始时间 开始时间
Z

zhengyoukang

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位如何用ADOstoredpro或ADOQuery调用存储过程!
存储过程带有输入及输出参数!
另外问一下,为什么现在我不能在大富翁中查找呀,老是报错!
 
下面是我调用存贮过程的模式。因为ADOStoreProc在参数处理上好像有些问题,所以
最好自已动态生成参数,否则一会子方便,到时常常不定的出现"***"参数找不到的错
误会烦死你。
还有,最好在存贮过程中写上如果返回参数为空时的处理方法(赋一个默认值),否
则在读参数时会出错。

procedure TDM.GetMsg(var MsgInfo: TMsgInfo; Mid: Integer);
begin
with ADOStoreProc do
begin
if ProcedureName <> 'GetInfoBase' then
begin
ProcedureName := 'GetInfoBase';
Parameters.CreateParameter('@mid', ftInteger, pdInput, 0, Null);
Parameters.CreateParameter('@pid', ftInteger, pdInputOutput, 0, Null);
Parameters.CreateParameter('@info', ftString, pdInputOutput, 2000, Null);
Parameters.CreateParameter('@wherefrom', ftInteger, pdInputOutput, 0, Null);
Parameters.CreateParameter('@whereto', ftInteger, pdInputOutput, 0, Null);
Parameters.CreateParameter('@done', ftWord, pdInputOutput, 0, Null);
end;

Parameters.ParamByName('@mid').Value := Mid;
ExecProc;
MsgInfo.Pid := Parameters.ParamByName('@pid').Value;
MsgInfo.Info := Parameters.ParamByName('@info').Value;
MsgInfo.WhereFrom := Parameters.ParamByName('@wherefrom').Value;
MsgInfo.WhereTo := Parameters.ParamByName('@whereto').Value;
MsgInfo.Done := Parameters.ParamByName('@done').Value;
end;
end;
 
ADOstoredpro是专门调用存储过程的控件。
属性设置:connection(选择AdoConnection) procedurename(选择存储过程) parameters(@RETURN_VALUE这个参数删掉)
with ADOStoredpro do
begin
parameters.parambyname('@参数1').value:=实参;
……
Execproc;
return:=Parameters.paramvalues['@retmsg'];
……
end

 
多人接受答案了。
 
后退
顶部