Oracle
 sql >> Baza danych >  >> RDS >> Oracle

TO_CHAR typu Oracle PL/SQL TABLE

ok, przepraszam, to nie jest kompletne, ale w celu kontynuacji z @Lukasem, oto, co mam do tej pory:

Po pierwsze, zamiast próbować tworzyć typy anydata/anytype, próbowałem użyć XML wyodrębnionego z kursora... dziwne, ale jego ogólne:

CREATE OR REPLACE procedure printCur(in_cursor IN sys_refcursor) IS
begin

    FOR c IN (SELECT ROWNUM rn,
                    t2.COLUMN_VALUE.getrootelement () NAME,
                    EXTRACTVALUE (t2.COLUMN_VALUE, 'node()') VALUE
               FROM TABLE (XMLSEQUENCE (in_cursor)) t,
                    TABLE (XMLSEQUENCE (EXTRACT (COLUMN_VALUE, '/ROW/node()'))) t2
               order by 1)

   LOOP
      DBMS_OUTPUT.put_line (c.NAME || ': ' || c.VALUE);
   END LOOP;

exception
    when others then raise;
end;
/

Teraz, aby to nazwać, potrzebujesz kursora, więc próbowałem rzutować na kursor w pl/sql, coś takiego:

open v_cur for select * from table(cast(v_tab as tab_type));

Ale w zależności od tego, jak zdefiniowana jest v_tab, może to powodować problemy z rzutowaniem pl/sql (używanie %rowtype w definicji tabeli zagnieżdżonej wydaje się powodować problemy).

W każdym razie możesz na tym bazować lub udoskonalać, jak chcesz. (i ewentualnie użyj xmltable...)

Mam nadzieję, że to pomoże




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Integracja ServiceNow z Oracle Identity Cloud Service (IDCS)

  2. Jak wyłączyć wyzwalacz w Oracle SQL Developer?

  3. Kroki synchronizacji trybu gotowości z podstawową bazą danych w Oracle

  4. Zainstaluj klienta Oracle z wiersza poleceń bez interakcji z użytkownikiem

  5. Kiedy wywołuję PreparedStatement.cancel() w aplikacji JDBC, czy faktycznie zabija to w bazie danych Oracle?