Problem using TIBCStoredProc
Problem using TIBCStoredProc
Hello,
I have created this stored procedure :
SET TERM ^^ ;
CREATE PROCEDURE P_STATUS_DOMINANT (
PRJT Char(30),
TRBN Char(30),
DATE_DEBUT TimeStamp,
DATE_FIN TimeStamp)
returns (
DEBUT_STATUS TimeStamp,
CODE_STATUS Char(10),
NOM_STATUS Char(50),
FAMILLE_ARRET_CNSTRCTR Char(30),
FAMILLE_ARRET_VALOREM Char(30))
AS
begin
select FIRST 1 DEBUT_STATUS,CODE_STATUS, NOM_STATUS,FAMILLE_ARRET_CNSTRCTR,FAMILLE_ARRET_VALOREM from STATUS
where NOM_PROJET=:prjt and REF_TURBINE_VALOREM=:trbn
and CODE_BRAKING_PRGRM'0' and DEBUT_STATUS '0' and DEBUT_STATUS between :DATE_DEBUT and :DATE_FIN
order by DEBUT_STATUS asc into :debut_status, :code_status,:nom_status,:famille_arret_cnstrctr,:famille_arret_valorem
do
begin
suspend;
end
end
^^
SET TERM ; ^^
Using Delphi i do this :
frmMain.IBCStrPrc.StoredProcName:='P_STATUS_DOMINANT';
frmMain.IBCStrPrc.Prepare;
frmMain.IBCStrPrc.ParamByName('PRJT').AsString:=prjt;
frmMain.IBCStrPrc.ParamByName('TRBN').AsString:=trbn;
frmMain.IBCStrPrc.ParamByName('DATE_DEBUT').AsDateTime:=dt;
frmMain.IBCStrPrc.ParamByName('DATE_FIN').AsDateTime:=IncMinute(dt,10);
frmMain.IBCStrPrc.Open;
When Open is called i have the message "sql statement doesn't return rows"
How can i do to read the values returned by the stored function?
Thank you for help
Regards
I have created this stored procedure :
SET TERM ^^ ;
CREATE PROCEDURE P_STATUS_DOMINANT (
PRJT Char(30),
TRBN Char(30),
DATE_DEBUT TimeStamp,
DATE_FIN TimeStamp)
returns (
DEBUT_STATUS TimeStamp,
CODE_STATUS Char(10),
NOM_STATUS Char(50),
FAMILLE_ARRET_CNSTRCTR Char(30),
FAMILLE_ARRET_VALOREM Char(30))
AS
begin
select FIRST 1 DEBUT_STATUS,CODE_STATUS, NOM_STATUS,FAMILLE_ARRET_CNSTRCTR,FAMILLE_ARRET_VALOREM from STATUS
where NOM_PROJET=:prjt and REF_TURBINE_VALOREM=:trbn
and CODE_BRAKING_PRGRM'0' and DEBUT_STATUS '0' and DEBUT_STATUS between :DATE_DEBUT and :DATE_FIN
order by DEBUT_STATUS asc into :debut_status, :code_status,:nom_status,:famille_arret_cnstrctr,:famille_arret_valorem
do
begin
suspend;
end
end
^^
SET TERM ; ^^
Using Delphi i do this :
frmMain.IBCStrPrc.StoredProcName:='P_STATUS_DOMINANT';
frmMain.IBCStrPrc.Prepare;
frmMain.IBCStrPrc.ParamByName('PRJT').AsString:=prjt;
frmMain.IBCStrPrc.ParamByName('TRBN').AsString:=trbn;
frmMain.IBCStrPrc.ParamByName('DATE_DEBUT').AsDateTime:=dt;
frmMain.IBCStrPrc.ParamByName('DATE_FIN').AsDateTime:=IncMinute(dt,10);
frmMain.IBCStrPrc.Open;
When Open is called i have the message "sql statement doesn't return rows"
How can i do to read the values returned by the stored function?
Thank you for help
Regards
You should use the PrepareSQL method instead of Prepare to fill SQL and create parameters for the stored procedure.
This method has the IsQuery parameter. If you pass True for this parameter, the TIBCStoredProc component generates SELECT statement in the SQL property, and you can call the Open method:
This method has the IsQuery parameter. If you pass True for this parameter, the TIBCStoredProc component generates SELECT statement in the SQL property, and you can call the Open method:
Code: Select all
frmMain.IBCStrPrc.StoredProcName:='P_STATUS_DOMINANT';
frmMain.IBCStrPrc.PrepareSQL(True);
...
frmMain.IBCStrPrc.Open;This is an error in your stored procedure. You should use a stored procedure like the following:
Code: Select all
CREATE PROCEDURE SEL_FROM_EMP
RETURNS (
EMPNO INTEGER,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR INTEGER,
SAL INTEGER,
COMM INTEGER,
DEPTNO INTEGER)
AS
BEGIN
FOR SELECT EMPNO, ENAME, JOB, MGR, SAL, COMM, DEPTNO FROM emp
INTO :EMPNO, :ENAME, :JOB, :MGR, :SAL, :COMM, :DEPTNO
DO
suspend;
END^