當前位置:首頁 » 存儲配置 » oracle存儲過程遍歷表

oracle存儲過程遍歷表

發布時間: 2023-08-21 20:44:43

『壹』 怎麼樣用oracle存儲過程循環清空多張的表數據

你這多張表要有某種聯系。
比如說表名按照日期取名:
這樣可以按照這種規律將表名作為參數傳入到存儲過程中去。
過程中有條件,循環語句來控制。
你試試看。
如果有問題請詳細說明。

『貳』 oracle存儲過程 loop字元串遍歷

sql">declare
xvarchar2(20);
v_lengthint;
yint;
v_strvarchar2(1);
begin
x:='wqr3331412rr';
selectlength(x)intov_lengthfromal;
y:=1;
whiley<=v_lengthloop
selectsubstr(x,y,1)intov_strfromal;
dbms_output.put_line(v_str);
y:=y+1;
endloop;
end;

直接運行吧,結果如圖

『叄』 關於oracle 存儲過程 如何切割一個字元串 轉化為字元數組,然後遍歷該數組: 類似ab,12;cd,55;k,7

給你寫了個包,包體代碼如下:
CREATE OR REPLACE PACKAGE BODY Pkg_Bai IS
-- 自定義個數組類型
TYPE Typ_Str_Array IS TABLE OF VARCHAR2(200) INDEX BY BINARY_INTEGER;
PROCEDURE Prc_String_To_Array(Pv_i_String IN VARCHAR2,
Pv_i_Identifier IN VARCHAR2,
Pt_o_Array OUT Typ_Str_Array) IS

Lv_Tmpstr VARCHAR2(200);
Lv_Changed_String VARCHAR2(4000);

BEGIN

-- 初始化
Lv_Changed_String := Pv_i_String;

-- 拆分邏輯
-- 1.字元串中沒有標識符
IF Instr(Pv_i_String, Pv_i_Identifier, 1, 1) = 0 THEN
Pt_o_Array(Pt_o_Array.Count + 1) := Pv_i_String;
ELSE

-- 2.字元串中有標識符
WHILE Instr(Lv_Changed_String, Pv_i_Identifier, 1, 1) > 0 LOOP
Lv_Tmpstr := Substr(Lv_Changed_String,
1,
Instr(Lv_Changed_String, Pv_i_Identifier, 1, 1) - 1);

Pt_o_Array(Pt_o_Array.Count + 1) := Lv_Tmpstr;
Lv_Changed_String := Substr(Lv_Changed_String,
Instr(Lv_Changed_String, Pv_i_Identifier, 1, 1) + 1,
Length(Lv_Changed_String));
END LOOP;

-- 3.最有一個被拆分出來的字元串中不含標識符
IF NOT Lv_Changed_String IS NULL THEN
-- 將最後一個保存
Pt_o_Array(Pt_o_Array.Count + 1) := Lv_Changed_String;
END IF;

END IF;

EXCEPTION
WHEN OTHERS THEN
NULL;
END;

PROCEDURE Prc_Test(Pv_i_Str IN VARCHAR2) IS
--定義數組
Lt_Array Typ_Str_Array;
Ln_Count NUMBER; -- 數組元素個數
Ln_Num NUMBER;
Lv_Value VARCHAR2(30);
BEGIN

Prc_String_To_Array(Pv_i_Str, ';', Lt_Array);
-- 循環數組
FOR i IN 1 .. Lt_Array.Count LOOP
-- 獲取每個元素中數值
Ln_Num := To_Number(TRIM(Substr(Lt_Array(i), Instr(Lt_Array(i), ',', -1) + 1)));
IF Ln_Num > 20 THEN
Lv_Value := TRIM(Substr(Lt_Array(i), 1, Instr(Lt_Array(i), ',', -1) - 1));
INSERT INTO a (col_a) VALUES (lv_value);
END IF;
END LOOP;
END;

END Pkg_Bai;

調用Prc_Test來分隔字元串並按要求比較後插入a表。我測試過,沒有問題。
需要注意的是,數據的要求:字元串中每組數據間使用英文小寫分號分隔,同一組數據字母在前,數字在後,以英文小寫逗號分隔。測試一下吧。
歡迎採納,不採納你都對不起我這20分鍾。呵呵......

『肆』 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' --這個你換成你要查的字元串,數字字母什麼都可以,只要逗號分隔就好

『伍』 在存儲過程中怎樣遍歷表

一條語句迅好就世燃可搜昌虛以
update table_to set [name]=update_from.[name] from update_from where update_to.id=update_from.id

熱點內容
scratch編程網站 發布:2025-02-01 05:51:27 瀏覽:395
安卓怎麼更好用 發布:2025-02-01 05:45:38 瀏覽:146
ps如何存儲多頁為pdf 發布:2025-02-01 05:44:15 瀏覽:32
預編譯和預處理區別 發布:2025-02-01 05:30:42 瀏覽:965
怎麼改變網路伺服器 發布:2025-02-01 05:24:55 瀏覽:602
華為雲伺服器可以裝軟體嗎 發布:2025-02-01 05:20:29 瀏覽:346
為什麼ios比安卓穩定 發布:2025-02-01 05:17:15 瀏覽:668
農村社保卡密碼多少 發布:2025-02-01 05:17:05 瀏覽:745
android下拉刷新通用 發布:2025-02-01 05:03:51 瀏覽:906
紫光存儲最近 發布:2025-02-01 04:58:49 瀏覽:381