Ich habe ein Skript, das eine XML-Datei öffnen und den Inhalt lesen und verarbeiten soll. Die PLSQL-Prozedur TEST_LOAD.BOB_LOAD wurde erfolgreich erstellt.Skript kann XMLTYPE-Argument nicht an PLSQL-Prozedur übergeben
TEST_LOAD.BOB_LOAD sieht wie folgt aus:
PROCEDURE BOB_LOAD(p_uuid IN varchar2,
xml_in IN xmltype,
msg_status OUT varchar2,
xml_out OUT xmltype);
END BOB_LOAD;
/
Das Skript unten nennt dieses Verfahren in der letzten Zeile und scheint die Ursache des Fehlers zu sein. Ich gehe davon aus, dass es die Variable x nicht als XMLTYPE erkennt.
DECLARE
xml_file UTL_FILE.FILE_TYPE;
chars_read INTEGER;
xml_clob CLOB;
xamount INTEGER :=32767;
char_buffer VARCHAR2(32767);
x XMLType;
BEGIN
xml_file := utl_file.fopen('/export/hm/testpit/bob', 'test.xml', 'r', xamount);
DBMS_LOB.CREATETEMPORARY(xml_clob, true);
LOOP
BEGIN
UTL_FILE.GET_LINE(xml_file, char_buffer);
chars_read :=LENGTH(char_buffer);
DBMS_LOB.WRITEAPPEND(xml_clob, chars_read, char_buffer);
DBMS_LOB.WRITEAPPEND(xml_clob, 1, CHR(10));
EXCEPTION
WHEN NO_DATA_FOUND THEN
EXIT;
END;
END LOOP;
UTL_FILE.FCLOSE(xml_file);
x := XMLType.createXML(xml_clob);
TEST_LOAD.BOB_LOAD('9718fa05-9995-4f17-jk1k-763113b8f4a4', x);
END;
/
Allerdings, wenn ich das Skript ausführen oben Ich erhalte eine ORA-06550, PLS: 00306 Fehler sagen:
ORA-06550: line 39, column 3:
PLS-00306: wrong number or types of arguments in call to 'BOB_LOAD'
ORA-06550: line 39, column 3:
PL/SQL: Statement ignored