This commit is contained in:
Jan Kvetina 2022-01-11 20:50:34 +01:00
parent 625df6f8fe
commit b782209d4b
2 changed files with 117 additions and 58 deletions

View File

@ -44,6 +44,11 @@ CREATE OR REPLACE PACKAGE app_actions AS
-- ### Navigation page
--
--
-- Remove missing pages from NAVIGATION table
--
@ -69,6 +74,13 @@ CREATE OR REPLACE PACKAGE app_actions AS
-- ### User Roles page
--
--
--
--
@ -137,6 +149,13 @@ CREATE OR REPLACE PACKAGE app_actions AS
-- ### Settings page
--
--
-- Get value from Settings table
--
@ -238,6 +257,13 @@ CREATE OR REPLACE PACKAGE app_actions AS
-- ### Views source table
--
--
-- Refresh views source (convert views source to lines)
--
@ -245,6 +271,27 @@ CREATE OR REPLACE PACKAGE app_actions AS
PROCEDURE clob_to_lines (
in_name VARCHAR2,
in_clob CLOB
);
-- ### E-mails
--
FUNCTION clob_to_blob (
in_clob CLOB
)
RETURN BLOB;
--
-- Send UTF_8 email with compressed attachements
--

View File

@ -752,10 +752,40 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
AS
PRAGMA AUTONOMOUS_TRANSACTION;
--
BEGIN
app.log_module();
--
DELETE FROM user_source_views;
--
FOR c IN (
SELECT
v.view_name,
DBMS_METADATA.GET_DDL('VIEW', v.view_name) AS content
FROM user_views v
) LOOP
DBMS_OUTPUT.PUT_LINE(c.view_name);
app_actions.clob_to_lines(c.view_name, REGEXP_REPLACE(c.content, '^(\s*)', ''));
END LOOP;
--
COMMIT;
--
app.log_success();
EXCEPTION
WHEN app.app_exception THEN
ROLLBACK;
RAISE;
WHEN OTHERS THEN
ROLLBACK;
app.raise_error();
END;
PROCEDURE clob_to_lines (
in_name VARCHAR2,
in_clob CLOB
) AS
)
AS
clob_len PLS_INTEGER := DBMS_LOB.GETLENGTH(in_clob);
clob_line PLS_INTEGER := 1;
offset PLS_INTEGER := 1;
@ -775,6 +805,10 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
DBMS_LOB.READ(in_clob, amount, offset, buffer);
END IF;
--
--
-- CREATE COLLECTION INSTEAD
-- RETURN
--
INSERT INTO user_source_views (name, line, text)
VALUES (
in_name,
@ -786,34 +820,31 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
IF INSTR(in_clob, CHR(10), offset) = clob_len THEN
buffer := '';
END IF;
--
offset := offset + amount + 1;
END LOOP;
END;
FUNCTION clob_to_blob (
in_clob CLOB
)
RETURN BLOB
AS
out_blob BLOB;
--
v_file_size INTEGER := DBMS_LOB.LOBMAXSIZE;
v_dest_offset INTEGER := 1;
v_src_offset INTEGER := 1;
v_blob_csid NUMBER := DBMS_LOB.DEFAULT_CSID;
v_lang_context NUMBER := DBMS_LOB.DEFAULT_LANG_CTX;
v_warning INTEGER;
v_length NUMBER;
BEGIN
app.log_module();
--
DELETE FROM user_source_views;
--
FOR c IN (
SELECT
v.view_name,
DBMS_METADATA.GET_DDL('VIEW', v.view_name) AS content
FROM user_views v
) LOOP
DBMS_OUTPUT.PUT_LINE(c.view_name);
clob_to_lines(c.view_name, REGEXP_REPLACE(c.content, '^(\s*)', ''));
END LOOP;
--
COMMIT;
--
app.log_success();
EXCEPTION
WHEN app.app_exception THEN
ROLLBACK;
RAISE;
WHEN OTHERS THEN
ROLLBACK;
app.raise_error();
DBMS_LOB.CREATETEMPORARY(out_blob, TRUE);
DBMS_LOB.CONVERTTOBLOB(out_blob, in_clob, v_file_size, v_dest_offset, v_src_offset, v_blob_csid, v_lang_context, v_warning);
RETURN out_blob;
END;
@ -871,25 +902,6 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
END IF;
END;
--
FUNCTION clob_to_blob (
in_clob CLOB
)
RETURN BLOB AS
out_blob BLOB;
--
v_file_size INTEGER := DBMS_LOB.LOBMAXSIZE;
v_dest_offset INTEGER := 1;
v_src_offset INTEGER := 1;
v_blob_csid NUMBER := DBMS_LOB.DEFAULT_CSID;
v_lang_context NUMBER := DBMS_LOB.DEFAULT_LANG_CTX;
v_warning INTEGER;
v_length NUMBER;
BEGIN
DBMS_LOB.CREATETEMPORARY(out_blob, TRUE);
DBMS_LOB.CONVERTTOBLOB(out_blob, in_clob, v_file_size, v_dest_offset, v_src_offset, v_blob_csid, v_lang_context, v_warning);
RETURN out_blob;
END;
--
PROCEDURE split_addresses (
in_out_conn IN OUT NOCOPY UTL_SMTP.CONNECTION,
in_to IN VARCHAR2
@ -964,7 +976,7 @@ CREATE OR REPLACE PACKAGE BODY app_actions AS
UTL_SMTP.WRITE_DATA(conn, 'Content-Type: ' || 'application/octet-stream' || UTL_TCP.CRLF);
UTL_SMTP.WRITE_DATA(conn, 'Content-Disposition: attachment; filename="' || in_attach_name || '.gz"' || UTL_TCP.CRLF || UTL_TCP.CRLF);
--
blob_content := clob_to_blob(in_attach_data);
blob_content := app_actions.clob_to_blob(in_attach_data);
DBMS_LOB.CREATETEMPORARY(blob_gzipped, TRUE, DBMS_LOB.CALL);
DBMS_LOB.OPEN(blob_gzipped, DBMS_LOB.LOB_READWRITE);
--