У меня есть таблица с именем 'uploaded_files', в которой хранятся * csv.files, загруженные пользователем через dropzone (https://github.com/Dani3lSun/apex-plugin-dropzone) пользователем в моем веб-приложении. Содержимое этих файлов хранится в табличной колонке типа данных blob.
Для вставки содержимого файла я использую пакет с именем 'csv_util_pkg' (https://github.com/mortenbra/alexandria-plsql-utils). Мне удалось преобразовать тип blob-объекта в тип clob-datatype и сохранить данные clob в другой таблице, которая называетсяx_dump. Таблица X_Dump Как вы можете видеть на рисунке, значения clob_value разделены и хранятся в «c001» и «c002». Это делается с помощью функции csv_util_pkg.
Теперь яЯ хочу взять эти два значения и сохранить их в таблице под названием «fahrzeug», но это не работает, и я действительно не знаю, почему. Я получаю следующий код ошибки
ORA-01400: Einfügen von NULL in ("RESSOURCE_U"."FAHRZEUG"."VNUMMER") nicht möglich
ORA-06512: in Zeile 14
01400. 00000 - "cannot insert NULL into (%s)"
*Cause: An attempt was made to insert NULL into previously listed objects.
*Action: These objects cannot accept NULL values.
И вотмой код:
DECLARE
file_content NUMBER (10);
l_clob CLOB;
BEGIN
SELECT TO_CLOB (
UTL_RAW.CAST_TO_VARCHAR2 (DBMS_LOB.SUBSTR (FILE_BLOB, 2000)))
INTO l_clob
FROM UPLOADED_FILES
WHERE UPLOADED_FILES.FILENAME LIKE 'A_%_Fahrzeug.csv';
INSERT INTO X_DUMP (CLOB_VALUE, DUMP_ID)
VALUES (l_clob, 1);
INSERT INTO fahrzeug (vnummer, baureihe)
SELECT c001, c002
FROM x_dump d, TABLE (csv_util_pkg.clob_to_csv (d.clob_value, ';'));
COMMIT;
END;
vnummer является первичным ключом моей таблицы 'fahrzeug', и поэтому мы не можем вставить ноль. Но я не понимаю, потому что c001 и c002 содержат значения, поэтому это не может бытьноль..
Спасибо за помощь!