EXECUTE IMMEDIATE nie daje wyniku

EXECUTE IMMEDIATE nie daje wyniku
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,

Próbuję zrobić następującą rzecz. W tabeli TABELA w dwóch kolumnach mam nazwy innych tabel.
Chcę dla każdej pary takich tabel wyświetlić wspólne wiersze po określonej kolumnie.

dbms_output.put_line zwraca poprawnie zapytanie ale execute immediate nie robi nic. Dlaczego?

Czy da się to zrobić tym sposobem poprawiając co nieco czy jest to niemożliwe i muszę kopiować wygenerowane zapytania i uruchamiać niezależnie?

SET SERVEROUTPUT ON ESCAPE OFF
SET serveroutput on size 10000

DECLARE
ss VARCHAR2(500);

BEGIN
FOR ww in (select * from TABELA)
LOOP
ss:='select * from '||ww.kolA||', '||ww.kolB||' where ww.kolB.aa=ww.kolB.bb'
dbms_output.put_line(ss);
EXECUTE IMMEDIATE ss;
END LOOP;
END;

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

dlaczego uważasz, że nic nie robi? Robi tylko ty nic nie wyświetlasz. W oracle select wewnątrz procedury nie pokazuje danych tak jak to sobie wyobrażasz.

  • Rejestracja: dni
  • Ostatnio: dni
0

Siedzę nad tym od rana i nic nie mogę wymyślić. Macie może pomysł co zmienić aby zadziałało?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

zrozum, że TO DZIAŁA zapytanie się wykonuje i już. Procedury zwracające zapytanie pisze się inaczej https://www.google.pl/search?q=oracle+stored+procedure+return+table i np. https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/dynamic.htm#i18972

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.