oracle存儲過程獲取字元串長度
㈠ oracle存儲過程 遍歷字元串
不用循環不行么,一個sql就搞定啦
selectcfrom
(withtestas(select'21,32,43'cfromal)
selectsubstr(t.ca,instr(t.ca,',',1,c.lv)+1,instr(t.ca,',',1,c.lv+1)-(instr(t.ca,',',1,c.lv)+1))ASc
from(select','||c||','ASca,length(c||',')-nvl(length(REPLACE(c,',')),0)AScntFROMtest)t,
(<=100)cwherec.lv<=t.cnt)
'21,32,43' --這個你換成你要查的字元串,數字字母什麼都可以,只要逗號分隔就好
㈡ oracle存儲過程怎麼截取字元串
之前我保存的經典的方法,你可以參考下
首先創建一張表t_al_test_sy
欄位分別為:pid,str_id,str_dm,str_mc;
存儲過程如下:
create or replace procere p_al_output
as
str_id varchar(60);
str_dm varchar(60);
str_mc varchar(800);
str_start number;
str_len number;
str_length number;
str_end number;
str_count number;
str_content varchar2(800);
str_partcontent varchar2(800);
str_iscontent number;
㈢ oracle 存儲過程里用 execute immedate 動態sql,更新一個表的clob欄位報字元長度
sql裡面varchar2最多4000個位元組,sql語句最多32K長度,估計是你的a_clob太長,放到sql裡面超過這個限制了,具體是哪個原因還得你自己測試。
可以使用綁定變數的方式來做。
V_SQL := 'UPDATE B '|| ' SET B_CLOB = ''' || AA.A_CLOB ||''' WHERE B_KEY = '''|| AA.A_KEY || '''';
EXECUTE IMMEDIATE V_SQL;
改成:
V_SQL := 'UPDATE B SET B_CLOB =:1 WHERE B_KEY =:2 ';
EXECUTE IMMEDIATE V_SQL using AA.A_CLOB,AA.A_KEY;
㈣ Oracle中存儲過程字元串長度問題
varchar2的最大程度是4000. 你最好換一個類型比如long或者clob
㈤ Oracle中怎樣用存儲過程將一段字元串以逗號為界截取,並將得到的子串存到另一張表中
㈥ oracle BLOG變數中的內容在存儲過程中讀取後出現換行符異常,請問如何解決
v_see := '萬一'||chr(10)||'1231411';
n_test := lengthb(substrb(strv_see,1,6)); --等於多少? 我這邊輸出是6
dbms_output.put_line(lengthb(v_see));
---------------------------------------------------
v_see := '萬一'||chr(10)||'1231411'; --這是做測試的,帶一個換行符的字元串變數
n_test := lengthb(v_see); --跟蹤到此時n_test = 16,串長包括了換行符。
v_see := substrb(v_line ,1,100); --從v_line里取出100個位元組的串看看
n_test := lengthb(v_see);
dbms_output.put_line(v_see); --列印這個看看是什麼內容?