DECLARE
S VARCHAR2(200);
T VARCHAR2(10000);
BEGIN
T := '苏F14898,苏F14899,苏F14900,苏F14901,苏F14902,苏F14903';
--DBMS_OUTPUT.PUT_LINE('第几个位置:' || INSTR(T, ','));
--DBMS_OUTPUT.PUT_LINE('取得的字符串:' || SUBSTR(T, INSTR(T, ',') + 1));
--S := SUBSTR(T, INSTR(T, ',') + 1);
--DBMS_OUTPUT.PUT_LINE('S:' || S);
WHILE INSTR(T, ',') > 0 LOOP
S := TRIM(SUBSTR(T, 1, INSTR(T, ',') - 1));
DBMS_OUTPUT.PUT_LINE('S:' || S);
T := SUBSTR(T, INSTR(T, ',') + 1);
END LOOP;
END;
相关知识:
================================================================
INSTR方法的格式为
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是
Instring
——————
14
INSTR(源字符串, 目标字符串, 起始位置, 匹配序号)
例如:INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。
默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找。
所以SELECT INSTR('CORPORATE FLOOR', 'OR', -1, 1) "Instring" FROM DUAL的显示结果是
Instring
——————
14
================================================================
Oracle/PLSQL: While Loop
The syntax for the WHILE Loop is:
WHILE condition
LOOP
{.statements.}
END LOOP;
LOOP
{.statements.}
END LOOP;
You would use a WHILE Loop when you are not sure how many times you will execute the loop body. Since the WHILE condition is evaluated before entering the loop, it is possible that the loop body may not execute even once.
译:当你不确定循环体有多少次的时候,可以使用
WHILE LOOP
。因为在进入循环以前,
WHILE
的条件是先给的,因为可能循环体不止执行一次。
Let's take a look at an example:
WHILE monthly_value <= 4000
LOOP
monthly_value := daily_value * 31;
END LOOP;
LOOP
monthly_value := daily_value * 31;
END LOOP;
In this example, the WHILE Loop would terminate once the monthly_value exceeded 4000.
译:在该示例中,WHILE循环将会在
monthly_value
的值达到
4000
时终止。