再利用可能なSQLテンプレート🤯
2822 ワード
👉SQL Table Macro :再利用可能なSQLテンプレート(FROM句)を作成します.
ドキュメント242479152
SQL表マクロは19.7リリースの更新にバックポートされた21 C機能です.
CREATE TABLE planets (
json_document BLOB,
CONSTRAINT json_document_is_json CHECK (json_document IS JSON)
);
INSERT INTO planets (json_document)
VALUES ( '[ {"name":"Mercury"}, {"name":"Venus"}, {"name":"Earth"},
{"name":"Mars"}, {"name":"Jupiter"}, {"name":"Saturn"},
{"name":"Uranus"}, {"name":"Neptune"} ]' );
COMMIT;
-- One row retrieved containing a JSON array
SELECT JSON_SERIALIZE(json_document) AS array FROM planets;
ARRAY
-------------------------------------------------------------
[ {"name":"Mercury"}, {"name":"Venus"}, {"name":"Earth"}, … ]
-- Second version where the column table is also a parameter
CREATE OR REPLACE FUNCTION unwind(t DBMS_TF.TABLE_T, c DBMS_TF.COLUMNS_T)
RETURN VARCHAR2 SQL_MACRO IS
BEGIN
RETURN := q'{
SELECT d.array_item AS JSON_DOCUMENT, d.order_id
FROM unwind.t nested }'|| unwind.c(1) ||q'{ COLUMNS (
NESTED PATH '$[*]' COLUMNS (
array_item CLOB FORMAT JSON PATH '$',
order_id FOR ORDINALITY
)
) d}';
END;
/
-- Using a table and one of its columns as parameters of SQL Macro
SELECT * FROM unwind( planets, COLUMNS( json_document ) );
JSON_DOCUMENT ORDER_ID
------------------ ----------
{"name":"Mercury"} 1
{"name":"Venus"} 2
{"name":"Earth"} 3
{"name":"Mars"} 4
{"name":"Jupiter"} 5
{"name":"Saturn"} 6
{"name":"Uranus"} 7
{"name":"Neptune"} 8
上記の例では、私のSQLマクロ(上記のアニメーションGIFと比較して)の2番目のバージョンを使用します.https://docs.oracle.com/en/database/oracle/oracle-database/19/newft/sql-macros-sqm.html
冥王星に対する意見:🙂
クリスサクソンは、このような素晴らしい機能のための要約を見つける多くの支援のための功績!
Reference
この問題について(再利用可能なSQLテンプレート🤯), 我々は、より多くの情報をここで見つけました https://dev.to/loiclefevre/reusable-sql-templates-learn-about-sql-macros-3527テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol