Ich verstehe den spezifischen Fehler nicht, den Sie erhalten, aber im Allgemeinen müssen Sie eine explizite Umwandlung in den entsprechenden Typ in die SQL-Anweisung einfügen:
open O_CURSOR for select * from table(CAST(dados AS t_pontos));
Dies liegt daran, dass die Anweisung zur Verarbeitung von PL/SQL an die SQL-Engine übergeben wird und keine Informationen über den Typ der Variablen enthält, außer dass sie benutzerdefiniert ist.
Außerdem funktioniert dies nur, wenn der Typ (t_pontos
) wird auf Schemaebene deklariert, also mit einem CREATE TYPE
Aussage. Wenn es irgendwo im PL/SQL-Code deklariert ist, z. in einer Paketspezifikation kann die SQL-Engine nicht auf die Typdefinition zugreifen.