我已經安裝了 Oracle DB/ORDS 并按照基于 Oracle 的指南創建了所有處理程式和相關程序。有一個我無法解決的問題,這看起來很簡單,但我對 SQL 缺乏了解阻礙了我。
當我批量發送 JSON 檔案時,如下所示;
{"tenantId":"wjg79702","userSessionId":"JAFLA....\n
{"tenantId":"wjg79702","userSessionId":"SLPW....\n
\n
這會按預期插入所有記錄。但是我想將每條記錄一條一條地插入到各個 CLOB 列中。每條記錄的末尾都有換行符。如何通過將附加功能合并到我的處理程式或程式中來拆分它們?
處理程式
BEGIN
create_kayit(p_kayit => :body_text);
END;
程式
create or replace PROCEDURE create_kayit (
p_kayit IN CLOB
)
AS
BEGIN
INSERT INTO uemtest (kayit) VALUES (p_kayit);
EXCEPTION
WHEN OTHERS THEN
HTP.print(SQLERRM);
END;
編輯 解決方案已經奏效。我正在分享最終代碼以供將來參考。
CREATE OR REPLACE PROCEDURE create_kayit (p_kayit IN CLOB) AS
BEGIN
INSERT INTO UEMTEST (KAYIT)
SELECT
REGEXP_SUBSTR(p_kayit, '. ', 1, level, 'm') KAYIT
FROM DUAL connect by level <= length(REGEXP_REPLACE(p_kayit,'. '));
EXCEPTION
WHEN OTHERS THEN
HTP.print(SQLERRM);
END;
uj5u.com熱心網友回復:
回答您的意見,如果你想回傳滑架做分割,一個選擇可能是regexp_substr和connect by
例子
SQL> select regexp_substr(to_clob('line 1
2 line 2
3 line 3') , '. ',1,level,'m') from dual
4 connect by level <= regexp_count( to_clob('line 1
5 line 2
6* line 3'), '. ',1,'m')
7 /
REGEXP_SUBSTR(TO_CLOB('LINE1LINE2LINE3'),'. ',1,LEVEL,'M')
--------------------------------------------------------------------------------
line 1
line 2
line 3
您只需要將此邏輯合并到您的程式中即可。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/344771.html
