Oracle
 sql >> база данни >  >> RDS >> Oracle

TO_CHAR от тип TABLE на Oracle PL/SQL

добре, съжалявам, че това не е пълно, но за да последвам @Lukas, ето какво имам досега:

Първо, вместо да се опитвам да създам типове anydata/anytype, опитах да използвам XML, извлечен от курсор... странно, но е общо:

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;
/

Сега, за да го извикате, имате нужда от курсор, така че опитах да прехвърля курсора в pl/sql, нещо като:

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

Но в зависимост от това как е дефиниран v_tab, това може или не може да причини проблеми в pl/sql cast (използването на %rowtype във вложената таблица def изглежда създава проблеми).

Както и да е, можете да надградите това или да го прецизирате, както желаете. (и евентуално да използвате xmltable...)

Надявам се това да помогне




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да получа достъп до Oracle от Python?

  2. ORA-00054:ресурсът е зает и придобива с указано NOWAIT

  3. Oracle ODP.Net и EF CodeFirst - Грешка при запазване на промените

  4. Форматиране на DATE в oracle

  5. Как да получите израз за създаване на таблица на Oracle в SQL*Plus