sql >> Database >  >> RDS >> Oracle

Fout (ORA-21700) met tabeloperator na update naar Oracle 12.2 vanaf 12.1

Ik kwam hetzelfde of een soortgelijk probleem tegen na een upgrade van Oracle 12c naar 19c. Ik weet niet zeker waarom de Oracle-upgrade een probleem heeft veroorzaakt, en ik begrijp ook niet echt waarom mijn oplossing werkt!

In mijn opgeslagen procedures, waar Oracle's TABLE-functie wordt toegepast op een opgeslagen procedure-invoer, krijg ik de fout:"ORA-21700:object bestaat niet of is gemarkeerd om te verwijderen".

Wanneer de Oracle-functie TABLE echter werd toegepast op een lokale variabele binnen de opgeslagen procedure, was er geen fout. Dus mijn tijdelijke oplossing was om gewoon opgeslagen procedure-invoer toe te wijzen aan lokale variabelen, voordat ik de TABLE-functie gebruikte, en op de een of andere manier loste dit het probleem op!

CREATE OR REPLACE PACKAGE my_types IS
  TYPE integers IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  TYPE reals    IS TABLE OF FLOAT INDEX BY BINARY_INTEGER;
END my_types;
/

CREATE OR REPLACE PROCEDURE order_list
(
  i_order_numbers  IN  my_types.integers,
  o_order_numbers  OUT my_types.integers,
  o_order_values   OUT my_types.reals
)
IS

  r_order_numbers  my_types.integers;

  CURSOR order_list_cur (p_order_numbers my_types.integers)
      IS
  SELECT order_number, order_value
    FROM orders
   WHERE order_number IN (SELECT * FROM TABLE(p_order_numbers))
  ;
  order_list_rec  order_list_cur%ROWTYPE;

  rec_no BINARY_INTEGER;

BEGIN

  r_order_numbers := i_order_numbers;

  rec_no := 0;

  OPEN order_list_cur(r_order_numbers);
  LOOP
    FETCH order_list_cur INTO order_list_rec;
    EXIT WHEN order_list_cur%NOTFOUND;
      rec_no := rec_no + 1;
       o_order_numbers(rec_no) := order_list_rec.order_number;
       o_order_values(rec_no) := order_list_rec.order_value;
  END LOOP;
  CLOSE order_list_cur;

END order_list;


  1. Hoe MySQLdb op Mountain Lion te installeren

  2. Aangepaste tekenreeksen voor datum-/tijdnotatie ondersteund door FORMAT() in SQL Server

  3. Symfony2 creëren en onderhouden van entiteitsrelaties

  4. De kolommen van de MySql-tabel bestellen met Python