Страница 1 из 1

процедура в FB 2.0.6

Добавлено: 19 окт 2011, 08:07
SeventhSon
Создал процедурку:

Код: Выделить всё

SET TERM ^ ;

create or alter procedure SL_REPLACE_STR (
    STRING char(250),
    SRCHFOR char(250),
    REPLACEWITH char(250))
returns (
    REZ char(250))
as
declare variable STRLEN smallint;
declare variable SRCHLEN smallint;
declare variable I integer;
begin
  strlen=char_length(trim(string));
  srchlen=char_length(trim(srchfor));
  rez='';
  if (srchlen>strlen) then exit;
  i=1;
  while(i<=(strlen-srchlen+1)) do
  begin
   if (substring(string from i for srchlen)=srchfor) then
    begin
     rez=substring(string from 1 for i-1)||trim(replacewith)||substring(string from i+srchlen for strlen);
    end
   i=i+1;
  end
end^

SET TERM ; ^

GRANT EXECUTE ON PROCEDURE SL_REPLACE_STR TO SYSDBA;
заменяет в исходной строке искомую строку на подстроку.в IBExpert запускаю,подсовываю параметры 123,2,q выдаёт 1q3 как и положено.
но вот когда открываю редактор и делаю тот же запрос SELECT * FROM SL_REPLACE_STR('123', '2', 'q') выдаёт null.
я не понимаю что происходит.подскажите пожалуйста в чём я затупил.

Re: процедура в FB 2.0.6

Добавлено: 19 окт 2011, 10:03
dimitr
или вызывай процедуру через execute procedure, или допиши в нее suspend

Re: процедура в FB 2.0.6

Добавлено: 19 окт 2011, 10:09
kdv

Re: процедура в FB 2.0.6

Добавлено: 19 окт 2011, 20:59
SeventhSon
спасибо.я думал что suspend нужен только в цикле for. и смутило что IBExpert в статусной окне писал значений выходной переменной.
всё заработало:)