У меня есть таблица
CREATE TABLE "SCOTT"."FILES"
( "FILE_ID" NUMBER(10,0) NOT NULL ENABLE,
"TEXT" BLOB,
"FILE_NAME" VARCHAR2(30),
"HTML_CONTENT" CLOB,
CONSTRAINT "FILES_PK" PRIMARY KEY ("FILE_ID"));
Я хочу вставить HTML Формат в столбце HTML_CONTENT. Я написал функцию, которая возвращает содержимое файлов html:
create or replace function get_html(
v_file_id in scott.files.file_id%type) return clob
as
l_clob clob;
v_file_name scott.files.file_name%type;
v_bfile bfile;
begin
select file_name into v_file_name from scott.files where file_id=v_file_id;
v_bfile := bfilename( 'FILES', v_file_name );
ctx_doc.policy_filter( 'my_policy', v_bfile, l_clob, false );
return l_clob ;
end;
Я хочу вставить это содержимое в столбец HTML_CONTENT. Я использую процедуру для вставки файлов и соответствующего содержания. Все вставки идут хорошо, кроме содержимого HTML. Он вставляет нулевые значения в столбец clob
create or replace PROCEDURE LOAD_FILE_TO_TABLE
(
DIR_NAME IN VARCHAR2 DEFAULT 'FILES'
, FILE_NAME IN VARCHAR2
) AS
l_clob clob;
l_blob blob;
l_bfile bfile;
html_format clob;
f_id pls_integer;
BEGIN
f_id:=S1.nextval;
--html_format:=get_html(S1.currval);
insert into scott.files (file_id,file_name, text,html_content)
values (f_id,FILE_NAME, empty_blob(),empty_clob())
returning text,get_html(f_id) into l_blob,html_format;
--insert into scott.files(html_content) values (html_format);
l_bfile := bfilename( DIR_NAME, FILE_NAME );
dbms_lob.fileopen( l_bfile );
dbms_lob.loadfromfile
(l_blob, l_bfile, dbms_lob.getlength( l_bfile ) );
-- html_format:=get_html(S1.currval);
dbms_output.put_line(html_format);
dbms_lob.loadfromfile
(html_format, l_bfile, dbms_lob.getlength( l_bfile ) );
dbms_lob.fileclose( l_bfile );
commit;
END LOAD_FILE_TO_TABLE;
Пожалуйста, помогите мне создать механизм таким образом, чтобы при вставке нового документа он мог генерировать и вставлять содержимое html в этот столбец clob.