>3. when i change proc to use execute statement with parameters
> 
>SET TERM ^ ;
>CREATE PROCEDURE MY_PROC_CALC_EXEC_PARAM(ID INTEGER) RETURNS(SUM_AAA INTEGER)
>AS
>DECLARE VARIABLE VAR_SQL VARCHAR(1000);
>BEGIN
>  VAR_SQL = 'SELECT SUM(AAA) FROM TABLEY WHERE ID=:ID';
>  EXECUTE STATEMENT (VAR_SQL) (ID := :ID) INTO :SUM_AAA;
>  SUSPEND;
>END^
>SET TERM ; ^
> 
>and run query
>SELECT (SELECT P.SUM_AAA FROM MY_PROC_CALC_EXEC_PARAM(T.FIELD_ID) P) FROM 
>TABLEX T
> 
>than select is prepared only once - ok :)

I'm impressed if Firebird understands that VAR_SQL doesn't change between each 
iteration so that preparing once is possible!

>4. but how to change this sample code to use paramaters and do not prepare 
>statement on every record?
> 
>SET TERM ^ ;
>CREATE PROCEDURE MY_PROC_CALC_EXEC_PARAM(ID INTEGER) RETURNS(SUM_AAA INTEGER)
>AS
>DECLARE VARIABLE VAR_SQL VARCHAR(1000);
>DECLARE VARIABLE VAR_BBB INTEGER;
>DECLARE VARIABLE VAR_NR INTEGER;
>BEGIN
>  VAR_SQL = 'SELECT SUM(AAA) FROM TABLEY WHERE ID=:ID ';
>  VAR_NR = 1;
>  FOR SELECT 
>  BBB 
>  FROM 
>  TABLEZ 
>  WHERE ID=:ID
>  INTO :VAR_BBB
>  DO
>    BEGIN  
>   /* DO SOME CALCULATION ON VAR_BBB */
>   
>   VAR_SQL = VAR_SQL || ' OR ID=:ID' || VAR_NR; 
>        How to add here parameter to list of parameters for below execute 
>statement?
>    END
> 
>  EXECUTE STATEMENT (VAR_SQL) (ID := :ID,  ID1, ID2, ID3 ...) <----- How to 
>specify parameters dynamically?
>  INTO :SUM_AAA;
>  
>  SUSPEND;
>END^
>SET TERM ; ^
> 
> 
>Is this somehow possible? Or should i add this to the Firebird bug tracker as 
>new feature request?
>This is important from performance point of view.
 
Here you change the SQL for each iteration, hence I cannot see how it would be 
possible to prepare only once. What you could try, is to use a temporary table, 
change your statement to:

SELECT SUM(Y.AAA) FROM TABLEY Y
JOIN TMP_TABLE T ON Y.ID = T.ID

and in your loop do

INSERT INTO TMP_TABLE(ID) VALUES(:VAR_NR)

HTH,
Set
  • ... liviuslivius liviusliv...@poczta.onet.pl [firebird-support]
    • ... Svein Erling Tysvær svein.erling.tysv...@kreftregisteret.no [firebird-support]

Reply via email to