-- baza danych obojetna
-- OBLICZYC:
-- ile w danej tabeli istnieje wierszy, w ktorych w danej kolumnie 
--             jest dana wartosc
-- ilustracja dynamic SQL

create or replace function sprawdz(tabela  varchar, kolumna varchar, 
                                   wartosc varchar) return integer 
is
  kursor       integer;
  zapytanie    varchar(255);
  liczba       integer := -1;
  ignore       integer;
begin
  kursor := DBMS_SQL.open_cursor;
  zapytanie := 'select count(*) from ' || tabela || 
               ' where ' || kolumna || ' = :parametr';
  DBMS_SQL.parse(kursor, zapytanie, DBMS_SQL.native);
  DBMS_SQL.bind_variable(kursor, 'parametr', wartosc);
  DBMS_SQL.define_column(kursor, 1, liczba);
  ignore := DBMS_SQL.execute(kursor);
  if DBMS_SQL.fetch_rows(kursor) > 0 then
    DBMS_SQL.column_value(kursor, 1, liczba);
  end if;
  DBMS_SQL.close_cursor(kursor);
  return liczba;
end;
/   
