1

Temat: problem z parametrem OUT

Witam!
Mam taki problem. Tworzę funkcję:
CREATE OR REPLACE FUNCTION "nazwa_funkcji"(in pattern varchar, out result varchar) RETURNS void AS ...itd...
i wyrzuca mi błąd:
ERROR:  CREATE FUNCTION / OUT parameters are not implemented
Totalnie nie rozumiem o co chodzi. Wydaje mi się, że deklaracja jest zgodna z dokumentacją.

Korzystając z możliwości chciałbym się jeszcze zapytać jak nadać wartość domyślną w funkcji. Gdy próbuję wywołać taką funkcję:
CREATE OR REPLACE FUNCTION add_state(process_id_ numeric, state_name_ varchar default 'new state' , state_nr_ numeric default null) returns numeric AS
dostaje błąd:
ERROR:  syntax error at or near "default" at character 191
Przyznam się, że trochę głupieje bo w ogóle nie rozumiem dlaczego tak się dzieje. Byłbym wdzięczny za wszelką pomoc. Z góry dziękuje.
Pozdrawiam

2

Odp: problem z parametrem OUT

Jaką masz wersję postgresa?
I po co ten 'returns void' skoro funkcja zwraca wartość typu varchar?

Ostatnio edytowany przez rski (2009-09-10 12:10:49)

3

Odp: problem z parametrem OUT

Wersja:
"PostgreSQL 8.0.0beta2 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.2.3 (mingw special 20030504-1)"

Ostatnio edytowany przez andyw (2009-09-10 12:15:06)

4

Odp: problem z parametrem OUT

select version(); 

albo

select version; 

Ale zakładam że jakąś nowszą, wiec usuń po prostu returns.

5

Odp: problem z parametrem OUT

napiszę całą funkcję:
CREATE OR REPLACE FUNCTION searchObjectCLOB(pattern varchar, OUT result varchar)  AS $BODY$declare
  object record;
   
  begin

    for object in (select Id, Tag from p_objects order by id) loop
      if dbms_lob.instr(object.Tag, pattern) > 0 then
       result := result || object.Id || '|';
      end if;
    end loop;
  end;  $BODY$ LANGUAGE 'plpgsql' VOLATILE;


cały czas ten sam błąd:
ERROR:  CREATE FUNCTION / OUT parameters are not implemented


wersja:
PostgreSQL 8.0.0beta2 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.2.3 (mingw special 20030504-1)

6

Odp: problem z parametrem OUT