新聞中心
oracle中如何定義一個(gè)游標(biāo),打開(kāi)一個(gè)游標(biāo),并遍歷
--創(chuàng)建一個(gè)測(cè)試用表
10余年的六盤(pán)水網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整六盤(pán)水建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“六盤(pán)水網(wǎng)站設(shè)計(jì)”,“六盤(pán)水網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
CREATE TABLE test_main (
id INT,
value VARCHAR(10),
PRIMARY KEY(id)
);
--插入測(cè)試數(shù)據(jù)
INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO');
INSERT INTO test_main(id, value) VALUES (3, 'THREE');
--游標(biāo)舉例
DECLARE
-- 定義游標(biāo).
CURSOR c_test_main IS
SELECT id, value FROM test_main;
-- 保存游標(biāo)數(shù)據(jù)的變量
v_main_data c_test_main%ROWTYPE;
BEGIN
-- 打開(kāi)游標(biāo).
OPEN c_test_main;
LOOP
-- 填充數(shù)據(jù)(主表).
FETCH c_test_main INTO v_main_data;
-- 假如沒(méi)有檢索到(主表)數(shù)據(jù),結(jié)束循環(huán)處理
Exit when c_test_main%NOTFOUND;
dbms_output.put_line(TO_CHAR(v_main_data.id)
|| ':' || v_main_data.value );
END LOOP;
-- 關(guān)閉游標(biāo)
CLOSE c_test_main;
END;
/
希望對(duì)你有幫助。
如何在oracle建一個(gè)存儲(chǔ)過(guò)程來(lái)遍歷數(shù)組,新手求解
SQL code
DECLARE
-- Define a varray of twelve strings.
TYPE months_varray IS VARRAY(12) OF STRING(9 CHAR);
-- Define an associative array of strings.
TYPE calendar_table IS TABLE OF VARCHAR2(9 CHAR)
INDEX BY BINARY_INTEGER;
-- Declare and construct a varray.
month MONTHS_VARRAY :=
months_varray('January','February','March'
,'April','May','June'
,'July','August','September'
,'October','November','December');
-- Declare an associative array variable.
calendar CALENDAR_TABLE;
BEGIN
-- Check if calendar has no elements.
IF calendar.COUNT = 0 THEN
-- Print a title
DBMS_OUTPUT.PUT_LINE('Assignment loop:');
DBMS_OUTPUT.PUT_LINE('----------------');
-- Loop through all the varray elements.
FOR i IN month.FIRST..month.LAST LOOP
-- Initialize a null associative array element.
calendar(i) := '';
-- Print an indexed element from the associative array.
DBMS_OUTPUT.PUT_LINE(
'Index ['||i||'] is ['||calendar(i)||']');
-- Assign the numeric index valued varray element
-- to an equal index valued associative array element.
calendar(i) := month(i);
END LOOP;
-- Print a title
DBMS_OUTPUT.PUT(CHR(10));
DBMS_OUTPUT.PUT_LINE('Post-assignment loop:');
DBMS_OUTPUT.PUT_LINE('---------------------');
-- Loop through all the associative array elements.
FOR i IN calendar.FIRST..calendar.LAST LOOP
-- Print an indexed element from the associative array.
DBMS_OUTPUT.PUT_LINE(
'Index ['||i||'] is ['||calendar(i)||']');
END LOOP;
END IF;
END;
Oracle:對(duì)一定數(shù)量的表(幾千個(gè))進(jìn)行遍歷或其他方式查詢,輪流處理每張表并輸出所有表的最終處理結(jié)果
下面語(yǔ)句用于批量生成語(yǔ)句,生成后在sqlplus執(zhí)行select?'select?id,sum(result)?from?'||table_name||'?group?by?id;'?from?user_tables?where?table_name?like?'MRO_%_201702';
oracle存儲(chǔ)過(guò)程 遍歷字符串
不用循環(huán)不行么,一個(gè)sql就搞定啦
select??c?from
(with?test?as?(select?'21,32,43'?c?from?dual)
select?substr(t.ca,instr(t.ca,?',',?1,?c.lv)?+?1,instr(t.ca,?',',?1,?c.lv?+?1)?-?(instr(t.ca,?',',?1,?c.lv)?+?1))?AS?c
from?(select?','?||?c?||?','?AS?ca,length(c?||?',')?-?nvl(length(REPLACE(c,?',')),0)?AS?cnt?FROM?test)?t,
(select?LEVEL?lv?from?dual?CONNECT?BY?LEVEL?=?100)?c?where?c.lv?=?t.cnt?)
'21,32,43'? --這個(gè)你換成你要查的字符串,數(shù)字字母什么都可以,只要逗號(hào)分隔就好
oracle如何實(shí)現(xiàn)遍歷查詢?
declare
teacher_name varchar(20)------------跟teacher表中老師名字類型保持一致
cursor t_name is select teachername from teacher---------申明游標(biāo)t_name為從teacher表中查詢老師名字
begin
open t_name;------打開(kāi)游標(biāo)t_name
loop-------開(kāi)始循環(huán)(遍歷)
fetch t_name into teacher_name-------將老師名字值賦予變量teacher_name
if t_name%found-------------開(kāi)始遍歷有值時(shí)插入以下數(shù)據(jù)
then
select name,count(*) into new_table
from table_teacher_student
where name=teacher_name group by name-----將一個(gè)老師名字依據(jù)條件插入新表數(shù)據(jù)
else
dmbs_output.put_line(‘完成所有工作’);---------遍歷結(jié)束時(shí)輸出完成工作
exit;
end if;
end loop;
倉(cāng)促寫(xiě)下以上內(nèi)容,可能部分語(yǔ)法報(bào)錯(cuò),思路就是這樣,很基本的一個(gè)游標(biāo)使用。
網(wǎng)頁(yè)標(biāo)題:oracle的如何遍歷,oracle如何遍歷表并取出數(shù)據(jù)
文章源于:http://fisionsoft.com.cn/article/hspccs.html