Temat: like w funkcji
Witam
Mam taką funkcje, która nie wiem dlaczego nic nie zwraca, wszystko przez warunek where, bez warunku działa, a select bez funkcji z tym warunkiem działa.
funkcję wywołuję tak select * from fpobierz_szukaj_klienta('a',true) -- drugi parametr teraz nie ma znaczenia
CREATE OR REPLACE FUNCTION "fpobierz_szukaj_klienta" (
zm_klient VARCHAR, zm_aktywny boolean)
RETURNS SETOF tab_klienci AS
$body$
declare
dane tab_klienci%ROWTYPE;
begin
for dane in SELECT * FROM tab_klienci where upper(zamawiajacy) like upper('% zm_klient %')
loop
return next dane;
end loop;
end;
$body$
LANGUAGE 'plpgsql'
SECURITY DEFINER
znalazłem w sieci coś takiego like upper(''%'' || zm_klient || ''%''), ale wywołanie funkcji wywala błedy
ERROR: operator is not unique: unknown % unknown
LINE 1: ...tab_klienci where upper(zamawiajacy) like upper(''%'' || zm_...
^
HINT: Could not choose a best candidate operator. You might need to add explicit type casts.
QUERY: SELECT * FROM tab_klienci where upper(zamawiajacy) like upper(''%'' || zm_klient || ''%'')
CONTEXT: PL/pgSQL function "fpobierz_szukaj_klienta" line 4 at FOR over SELECT r
a taki warunek like upper(''%zm_klient%'')
ERROR: operator does not exist: unknown % character varying
LINE 1: ...tab_klienci where upper(zamawiajacy) like upper(''%zm_klient...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
QUERY: SELECT * FROM tab_klienci where upper(zamawiajacy) like upper(''%zm_klient%'')
CONTEXT: PL/pgSQL function "fpobierz_szukaj_klienta" line 4 at FOR over SELECT rows
Nie mam pojęcia dlaczego to nie działa
Dzięki z góry za pomoc
AdamP.
Ostatnio edytowany przez adamleon (2011-01-29 20:28:34)