Please check this :

SET TERM ^ ;
ALTER PROCEDURE SP_VERSION_NOS (
    PORTION smallint,
    SEPARATOR char(1),
    VERSION_UPTO varchar(80) )
RETURNS (
    VERSION_NO varchar(80) )
AS
declare variable i smallint;
declare variable SEPARATOR_POS Integer;
declare variable VERSION_UPTO_PORTION_INT integer;
declare variable VERSION_i varchar(80);
declare variable VERSION_i_PORTION_INT integer;
BEGIN
    i = 1;
    while (:PORTION > :i) do begin
        select position(:SEPARATOR in :VERSION_UPTO) from RDB$DATABASE into
:SEPARATOR_POS;
        if(0 != :SEPARATOR_POS) then begin
            VERSION_UPTO = substring(:VERSION_UPTO from (:SEPARATOR_POS +
1) for char_length(:VERSION_UPTO));
        end
        i = 1 + :i;
    end
    select position(:SEPARATOR in :VERSION_UPTO) from RDB$DATABASE into
:SEPARATOR_POS;
    if(0 != :SEPARATOR_POS) then begin
        VERSION_UPTO = substring(:VERSION_UPTO from 1 for :SEPARATOR_POS -
1);
    end else begin
        VERSION_UPTO = substring(:VERSION_UPTO from 1 for
char_length(:VERSION_UPTO));
    end
    VERSION_UPTO_PORTION_INT = cast(:VERSION_UPTO as integer);

    FOR SELECT a.VERSION_NO FROM VERSION_NOS a INTO :VERSION_NO
    DO BEGIN
        VERSION_i = :VERSION_NO;
        i = 1;
        while (:PORTION > :i) do begin
            select position(:SEPARATOR in :VERSION_i) from RDB$DATABASE
into :SEPARATOR_POS;
            if(0 != :SEPARATOR_POS) then begin
                VERSION_i = substring(:VERSION_i from (:SEPARATOR_POS + 1)
for char_length(:VERSION_i));
            end
            i = 1 + :i;
        end
        select position(:SEPARATOR in :VERSION_i) from RDB$DATABASE into
:SEPARATOR_POS;
        if(0 != :SEPARATOR_POS) then begin
            VERSION_i = substring(:VERSION_i from 1 for :SEPARATOR_POS - 1);
        end else begin
            VERSION_i = substring(:VERSION_i from 1  for
char_length(:VERSION_i));
        end

        VERSION_i_PORTION_INT = cast(:VERSION_i as integer);
        if(:VERSION_UPTO_PORTION_INT >= :VERSION_i_PORTION_INT) then begin
            SUSPEND;
        end
    END

    /* SELECT p.VERSION_NO FROM SP_VERSION_NOS ('3', '.', '1.23.450.789')
p;*/
END^
SET TERM ; ^

GRANT EXECUTE
 ON PROCEDURE SP_VERSION_NOS TO  SYSDBA;
  • [firebi... venussof...@gmail.com [firebird-support]
    • Re... LtColRDSChauhan rdsc1...@gmail.com [firebird-support]
      • ... Venus Software Operations venussof...@gmail.com [firebird-support]
        • ... LtColRDSChauhan rdsc1...@gmail.com [firebird-support]
          • ... Venus Software Operations venussof...@gmail.com [firebird-support]
          • ... Venus Software Operations venussof...@gmail.com [firebird-support]

Reply via email to