oracle的存储过程定义如下
PROCEDURE P_YDZZ_XGYDBZXX(
CZRK_CSXXID IN NUMBER,
CZRK_SLH IN VARCHAR2,
CZRK_YDBZYID IN NVARCHAR2,
CZRK_YDBZSJ IN CHAR,
RETCODE OUT CHAR,
RETMSG OUT VARCHAR2);
被写在YDZZ的包里面,没有结果集的返回
我的调用代码如下
sp_ok: TStoredProc;
procedure TYDZZXQ_ZCT.Save_ok();
begin
sp_ok.Close;
sp_ok.StoredProcName := 'YDZZ.P_YDZZ_XGYDBZXX';
sp_ok.Params.Clear;
sp_ok.Params.CreateParam(TFieldType.ftFloat,'CZRK_CSXXID',TParamType.ptInput);
sp_ok.Params.CreateParam(TFieldType.ftString,'CZRK_SLH',TParamType.ptInput);
sp_ok.Params.CreateParam(TFieldType.ftString,'CZRK_YDBZYID',TParamType.ptInput);
sp_ok.Params.CreateParam(TFieldType.ftString,'CZRK_YDBZSJ',TParamType.ptInput);
sp_ok.Params.CreateParam(TFieldType.ftString,'RETCODE',TParamType.ptOutput);
sp_ok.Params.CreateParam(TFieldType.ftString,'RETMSG',TParamType.ptOutput);
with sp_ok.Params do
begin
ParamByName('CZRK_CSXXID').AsFloat :=TYDZZXX(InfoBrokerYDZZXX.Info).DataSetYDZZXXZ.FieldByName('SBXXID').AsFloat;
ParamByName('CZRK_SLH').AsString :=SysUtils.Trim(edtSlh.Text);
ParamByName('CZRK_YDBZYID').AsString := '';//TSystemCore.Operator.DisplayName;
ParamByName('CZRK_YDBZSJ').AsString := SysUtils.FormatDateTime('yyyymmdd',dtpYdbzqrsj.Date);
end;
sp_ok.Execute;
if sp_ok.Params.ParamByName('RETCODE').AsInteger<1 then
raise Exception.create(sp_ok.Params.ParamByName('RETMSG').AsString);
end;
问题1:报"无效的列索引类型"
问题2:我的存储过程里面的number类型,对应TFieldType的哪一个?
请大侠们指点 |