EXECUTE IMMEDIATE nie daje wyniku

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;

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.

0

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

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1