我的存储过程实现了两个功能,一个是不用数据集返回值的,
另一个是用了数据集返回值的.用P_TYPE不同选择不同的方法.
不用数据集的可以返回值.另一个却不能.
create or replace procedure PROC_TEMP_RANK_ONE_T(
P_TYPE IN NUMBER,
P_STATUS in number,
prm11 in number,
prm12 in varchar2,
prm13 in varchar2,
rm11 out number,
rm12 out varchar2,
rm13 out varchar2,
my_cur out TestPackage.TestResultSet
) is
BEGIN
SET TRANSACTION READ WRITE;
if P_TYPE=2 then
open my_cur for select job_no,job_name,job_desc from jobs where status=P_STATUS and job_no=100000;
end if;
if P_TYPE=1 then
rm11:=prm11;
rm12:=prm12;
rm13:=prm13;
end if;
END PROC_TEMP_RANK_ONE_T;
procedure TKBBD4.Button1Click(Sender: TObject);
begin
try
DataSetDataSetStoredProc.Params.ParamByName('P_TYPE').AsInteger:=2;
DataSetDataSetStoredProc.Params.ParamByName('P_STATUS').AsInteger:=1;
DataSetDataSetStoredProc.Active:=true;
except
on e:exception do
begin
jsdialogs.ShowError(e.Message+'button1click出错!','异常');
SysUtils.Abort;
end;
end;
end;
procedure TKBBD4.ButtonMARKSTATUSClick(Sender: TObject);
begin
StoredProc.Params.ParamByName('P_TYPE').AsInteger:=1;
StoredProc.Params.ParamByName('prm11').AsInteger:=111;
StoredProc.Params.ParamByName('prm12').AsString:='22222';
StoredProc.Params.ParamByName('prm13').AsString:='测试';
StoredProc.Execute;
Memo1.Lines.Add(StoredProc.Params.ParamByName('rm11').AsString);
Memo1.Lines.Add(StoredProc.Params.ParamByName('rm12').AsString);
Memo1.Lines.Add(StoredProc.Params.ParamByName('rm13').AsString);
end; |