Witam

Chciałbym w oraclu zrobić sobie takie zapytanie:

  1. SELECT * FROM object WHERE object_name IN ('Przyjaciele','Ray');


Tylko, że dane w których ma sie zawierać będą przypisywane do zmiennej w zależności od wybranych opcji, więc potrzebuje to ('Przyjaciele', 'Ray') przypisać do zminnej vCategory, żeby zapytanie wyglądało tak:

  1. SELECT * FROM object WHERE object_name IN vCategory


W PHP nie ma z tym problemu, gdyż przypisze sobie zmienną:
$vCategory="'Przyjaciele','Ray'";

I później zapytanie:

  1. SELECT * FROM object WHERE object_name IN ( $vCategory )


W oraclu próbowałem na różne sposoby przypisać to do zmiennej, ale nie chce to w ogole działać. Czy wie ktoś jak rozwiązać ten problem questionmark.gif?



Znalazlem rozwiazanie mojego problemu na forum dyskusyjnym. Wklejam je, moze sie komus przyda.

  1. declare
  2. type cc IS ref cursor;
  3. ref_cur cc;
  4. v_sql_stmt varchar2(30000);
  5. v_category varchar2(2000) := '''INDEX'',''TABLE''';
  6. v_object_name varchar2(200);
  7. v_object_type varchar2(200);
  8. begin v_sql_stmt := 'SELECT object_name,object_type FROM user_objects WHERE object_type IN ('||v_category||')';
  9. --dbms_output.put_line(v_sql_stmt);
  10. open ref_cur FOR v_sql_stmt;
  11. loop
  12. fetch ref_cur INTO v_object_name, v_object_type;
  13. exit when ref_cur%notfound;
  14. dbms_output.put_line('name: '||v_object_name||' '||', type: '||v_object_type);
  15. end loop;
  16. end;