请教一个BDE调用存储过程不能返回参数的问题(100分)

  • 主题发起人 主题发起人 水印
  • 开始时间 开始时间

水印

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(]请教:最近,我在用BDE组件开发C/S程序,数据库为SQL SERVER2000,当客户端采用
带返回参数的方式调用存储过程时,无法返回存储过程返回的结果参数,客户端的参数
是动态产生的(DataSet为TClientDataSet,用TDcomconnect连接,Server程序
采用TDataBase,TQuery,TDataSetProvider等),如:
DataSet.Close;
// ClearDatasetParams(DataSet);

DataSet.Params.AddParam(Tparam.Create(DataSet.Params));
DataSet.Params[0].Name:='old_pwd';
DataSet.Params[0].DataType:=ftstring;
DataSet.Params[0].ParamType:= ptinput;
DataSet.Params.AddParam(Tparam.Create(DataSet.Params));
DataSet.Params[1].Name:='new_pwd';
DataSet.Params[1].DataType:=ftstring;
DataSet.Params[1].ParamType:= ptinput;
DataSet.Params.AddParam(Tparam.Create(DataSet.Params));
DataSet.Params[2].Name:='user_name';
DataSet.Params[2].DataType:=ftstring;
DataSet.Params[2].ParamType:= ptinput;
DataSet.Params.AddParam(Tparam.Create(DataSet.Params));
DataSet.Params[3].Name:='returns';
DataSet.Params[3].DataType:=ftinteger;
DataSet.Params[3].ParamType:= ptinputoutput;
DataSet.CommandText:='execute coalstation.modify_password :old_pwd,'+
':new_pwd,:user_name,:returns output' ;
DataSet.Params.ParamByName('old_pwd').asstring:=trim(RzEdit2.Text);
DataSet.Params.ParamByName('new_pwd').asstring:=trim(RzEdit1.text);
DataSet.Params.ParamByName('user_name').asstring:=trim(RzEdit1.text);

DataSet.Params.ParamByName('returns').asinteger:=-1000;
DataSet.Execute;
except
case Dataset.Params.ParamByName('returns').asinteger of
-1200:begin
messagebox(handle,'此用户不存在!,不能保存','警告',mb_ok);
end;
-1100:begin
messagebox(handle,'处理数据时出错!','警告',mb_ok);
end;
end;

result:=-1;
exit;
end;
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
955
SUNSTONE的Delphi笔记
S
后退
顶部