當前位置:首頁 » 存儲配置 » oracle存儲過程拼接字元串

oracle存儲過程拼接字元串

發布時間: 2023-09-25 08:52:25

㈠ 怎樣Oracle把多條記錄的相同欄位拼成一個字元串

select 別名 from(
select row_number()over(order by lv desc) id,name from
(
select level lv,replace(sys_connect_by_path(欄位,','),',','') 別名from
(
select name,row_number()over(order by 欄位) id from 查詢結果
)
connect by prior id = id-1
)
)where id=1;

*************
測試log:
*************
[TEST@ORA1] sql>select * from test2;

NAM ID
--- ----------
aaa 234
bbb 786
ccc 879

[TEST@ORA1] SQL>select name from(
2 select row_number()over(order by lv desc) id,name from
3 (
4 select level lv,replace(sys_connect_by_path(name,','),',','') name from
5 (
6 select name,row_number()over(order by name) id from test2
7 )
8 connect by prior id = id-1
9 )
10 )where id=1;

NAME
--------------------------------------------------------------------------------

aaabbbccc

*************************
10g以上(含10g):
select replace(wm_concat(欄位),',','') 別名 from 查詢結果;

測試log:
[TEST@ORA1] SQL>select * from test2;

NAM ID
--- ----------
aaa 234
bbb 786
ccc 879

[TEST@ORA1] SQL>select replace(wm_concat(name),',','') name from test2;

NAME
---------------------------------------------------------------------------

aaabbbccc

---
以上,希望對你有所幫助。

㈡ Oracle 怎麼把存儲過程傳過來的參數拼接成

給你一個 傳遞參數的例子

SQL> CREATE OR REPLACE PROCEDURE HelloWorld2 (
2 p_user_name IN VARCHAR2,
3 p_out_val OUT VARCHAR2,
4 p_inout_val IN OUT VARCHAR2
5 ) AS
6 BEGIN
7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!');
8 p_out_val := 'A';
9 p_inout_val := 'B';
10 END HelloWorld2;
11 /

Procere created.

SQL> DECLARE
2 p_outval VARCHAR2(10);
3 p_inoutval VARCHAR2(10) := '~Hi~';
4 BEGIN
5 HelloWorld2('Edward', p_outval, p_inoutval);
6
7 dbms_output.put_line('p_outval=' || p_outval);
8 dbms_output.put_line('p_inoutval=' || p_inoutval);
9 END;
10 /
Hello Edward~Hi~!
p_outval=A
p_inoutval=B

PL/SQL procere successfully completed.

SQL>

㈢ oracle 存儲過程 求助

詳見文本中「--註:」後的注釋
create or replace procere test_cjsql_z( /*in_sqlnr in clob,*/out_code in out varchar2,
out_mess in out varchar2) Authid Current_User IS
--註:創建存儲過程test_cjsql_z,輸入輸出型參數out_code、out_mess
PRAGMA AUTONOMOUS_TRANSACTION; --註:自助事務處理
in_sqlnr clob;--註:聲明clob類型變數
V_LENGTH NUMBER;--註:number是數值類型變數
V_NUMBER1 NUMBER;
V_NUMBER2 NUMBER;
V_BSF NUMBER; --標識附,標識SQL語句中最後CHR(10)的位置。
V_STEP NUMBER;
buffer VARCHAR2(4000);--註:varchar2(xx)是字元串類型變數,xx是長度
V_TEMPSQL VARCHAR2(4000);
V_LINESQL VARCHAR2(4000);
V_SQLERR VARCHAR2(255);
jb_err exception;--註:聲明例外對象
amount INT;
--v_sql VARCHAR2(4000);
BEGIN
select sqlnr into in_sqlnr from t_sql where sql_id = '100475'; --取clob 欄位
V_LENGTH := to_number(ceil(dbms_lob.getlength(in_sqlnr) / 2000)); --取lob長度
for i in 1 .. V_LENGTH loop
--循環次數
amount := 2000;--註:以2000為單位
dbms_lob.read(in_sqlnr, amount, (i - 1) * 2000 + 1, buffer); --提取lob
buffer := replace(buffer, chr(13), ''); --替換 回車
buffer := V_TEMPSQL || buffer;--註:拼接字元串
V_BSF := INSTR(buffer, CHR(10), -1, 1); --最後 換行 的位置
V_TEMPSQL := SUBSTR(buffer, V_BSF, length(buffer) - V_BSF + 1);--註:從buffer中截取字元串
buffer := SUBSTR(buffer, 1, V_BSF);
V_STEP := 1;
loop
V_NUMBER1 := INSTR(buffer, CHR(10), 1, V_STEP);
V_NUMBER2 := INSTR(buffer, CHR(10), 1, V_STEP + 1);
V_LINESQL := RTRIM(REPLACE(SUBSTR(buffer,
V_NUMBER1,
V_NUMBER2 - V_NUMBER1 + 1),
CHR(10),
''),
';');
EXIT WHEN V_LINESQL IS NULL; --V_LINESQL 為 null 跳出循環
BEGIN
-- v_sql := 'insert into hx_sjmx.test_zh values (V_LINESQL)';
-- EXECUTE IMMEDIATE v_sql;
EXECUTE IMMEDIATE V_LINESQL; --執行 V_LINESQL
EXCEPTION --註:FOR循環中的例外處理部分
WHEN OTHERS THEN
V_SQLERR := SUBSTR(SQLERRM, 1, 255); --例外
out_code := '2';--註:輸出返回代碼
out_mess := substrb(V_SQLERR || '-' || V_LINESQL, 1, 2000);--註:輸出返迴文本
raise jb_err;--註:拋出例外
END;
V_STEP := V_STEP + 1;
end loop;
end loop;
out_code := '1';--註:輸出返回代碼
out_mess := '執行成功!';--註:輸出返迴文本
commit;
exception--註:例外處理
when jb_err then--註:當出現自定義例外時
rollback;--註:回滾
when others then--註:其它情況
V_SQLERR := SUBSTR(SQLERRM, 1, 255);
out_code := '3';--註:輸出返回代碼
out_mess := V_SQLERR;--註:輸出返迴文本
rollback;--註:回滾
END test_cjsql_z;

㈣ Oracle 怎麼把存儲過程傳過來的參數拼接成一個字元串

Oracle 怎麼把存儲過程傳過來的參數拼接成一個字元串
你可以拼接'to_date(' || 字元串類型日期 || 『,YYYY-MM-DD HH24:MI:SS)』 || .... 日期格式可根據需要調整

㈤ oracle plsql的存儲過程中,類似' || chr(10) || ' 的語法意思

oracle中的||是拼接字元串的意思,你說的有時候是單引號有時候是雙引號估計是因為外面用了單引號或雙引號,所以需要用另外一種來消除歧義。

㈥ Oracle字元串的拆分和拼接

如果是固定的格式,那就好辦,檢測欄位中的「,」分割成四段,然後按要求接起來。

使用函數好些,可以直接調用。

函數寫好:已經測試過。

CREATEORREPLACEFUNCTIONjson_montage(JSONINVARCHAR2)RETURNVARCHAR2IS
In_JSONVARCHAR2(4096);
v_JSONVARCHAR2(4096)DEFAULT'{"comicPkgList":[{J1,J2,J4}],J3}';
v_J1VARCHAR2(4096);
v_J2VARCHAR2(4096);
v_J3VARCHAR2(4096);
v_J4VARCHAR2(4096);
v_splitVARCHAR2(10)DEFAULT',';
lenNUMBER(10)default0;
placeNUMBER(10)default2;

BEGIN
In_JSON:=JSON;
/*
原字元串:
{"IsSmsConfirm":false,"proctID":"MDSP3331111","autoReceive":false,"supCycle":1}

期望轉換後的:
{"comicPkgList":[{"IsSmsConfirm":false,"proctID":"MDSP3331111","supCycle":1}],"autoReceive":false}
*/
In_JSON:=RTRIM(LTRIM(In_JSON));
place:=INSTR(In_JSON,v_split,2,1);
len:=place-1-1;
v_J1:=SUBSTR(In_JSON,2,len);
len:=INSTR(In_JSON,v_split,2,2)-place-1-0;
v_J2:=SUBSTR(In_JSON,place+1,len);
place:=INSTR(In_JSON,v_split,2,2);

len:=INSTR(In_JSON,v_split,2,3)-place-1-0;
v_J3:=SUBSTR(In_JSON,place+1,len);
place:=INSTR(In_JSON,v_split,2,3);

len:=LENGTH(In_JSON)-place-1;
v_J4:=SUBSTR(In_JSON,place+1,len);


v_JSON:='{"comicPkgList":[{'||v_J1||','||v_J2||','||v_J4||'}],'||v_J3||'}';

IFv_JSON='{"comicPkgList":[{J1,J2,J4}],J3}'THEN
v_JSON:='ERROR';
ENDIF;
RETURNv_JSON;
EXCEPTION
WHENNO_DATA_FOUNDTHEN
NULL;
WHENOTHERSTHEN
RAISE;
ENDjson_montage;
/

㈦ ORACLE 存儲過程中的....是什麼意思如下 ' || '''' || 'yyyy-mm-dd' || '''' || '

|| 是字元串連接符號
'''' 四個單引號,第1,4個單引號是正常的單引號,第2個單引號是轉義字元,第3個單引號,編譯後想保留的單引號。
最終目的 就是to_char(a.txntimestamp, 'yyyy-mm-dd') 這樣的格式
這里頭不是直接寫sql文,而是用字元串拼接成新的sql字元串。

㈧ 如何將ORACLE存儲過程中SQL的結果集列印出來,並且按照一定的格式封裝到一個字元串中呢

這就用上了遞歸的思想,思路如下,沒有你的數據如果有問題你調試下
V_SQL='select * from (
select REPLACE(SYS_CONNECT_BY_PATH(a,','),',') , LEVEL from (
SELECT OBJECT_ID || ''|''||
OBJECT_NAME || ''|''||
PHASE_ID || ''|''||
BUSI_TYPE || ''|''||
BUSI_NAME || ''|''||
BUSI_SUBCLASS_CODE || ''|''||
BUSI_SUBCLASS_NAME || ''|''||
BUSI_CLASSIFI_CODE || ''|''||
BUSI_CLASSIFI_NAME || ''|''||
BRAND_TYPE || ''|''||
CODE_NAME || ''|''||
RULER_OPTI || ''|''||
RULER_CENT || ''|''||
DONE_DATE || ''|''||'';'' a
FROM KH.KF_IVR_BUSI_CALCULATE S WHERE S.PHASE_ID=' || V_MONTH ||
' AND S.OBJECT_ID=' || V_OP_ID || ')
START WITH ROWNUM =1
CONNECT BY PRIOR rn +1= rn ORDER BY LEVEL DESC )
WHERE ROWNUM < 2 ';

熱點內容
用戶上傳伴奏 發布:2024-11-30 09:35:33 瀏覽:263
sql伺服器配置失敗 發布:2024-11-30 09:35:21 瀏覽:910
php從傳智播客 發布:2024-11-30 09:33:47 瀏覽:965
硬碟錄像機外接存儲伺服器 發布:2024-11-30 09:27:18 瀏覽:993
雅視修改密碼為什麼失敗 發布:2024-11-30 09:25:46 瀏覽:966
安卓照片大小怎麼改100k內 發布:2024-11-30 09:20:39 瀏覽:431
ups系統如何配置網路 發布:2024-11-30 09:06:14 瀏覽:58
怎麼看pppoe密碼 發布:2024-11-30 08:35:35 瀏覽:510
sandisk16gb存儲卡 發布:2024-11-30 08:34:42 瀏覽:954
eclipsejava反編譯 發布:2024-11-30 08:34:37 瀏覽:900