ts7758258 发表于 2018-9-13 09:19:14

oracle数据库深入(三)

BEGIN  FOR intin 1..10 LOOP
  DBMS_OUTPUT.PUT_LINE('int 的当前值为: '||int);
  END LOOP;
  
END;
  
——————————————————————————————
  
CREATE TABLE temp_table(num_col NUMBER);
  
DECLARE
  V_counter NUMBER := 10;
  
BEGIN
  INSERT INTO temp_table(num_col) VALUES (v_counter );
  FOR v_counter IN 20 .. 25 LOOP
  INSERT INTO temp_table (num_col ) VALUES ( v_counter );
  END LOOP;
  INSERT INTO temp_table(num_col) VALUES (v_counter );
  FOR v_counter IN REVERSE 20 .. 25 LOOP
  INSERT INTO temp_table (num_col ) VALUES ( v_counter );
  END LOOP;
  
END ;
  
DROP TABLE temp_table;
  
——————————————————————————————————
  
DECLARE
  TYPE jobids_varray IS VARRAY(12) OF VARCHAR2(10); --定义一个VARRAY数据类型
  v_jobids JOBIDS_VARRAY; --声明一个具有JOBIDS_VARRAY数据类型的变量
  v_howmany NUMBER; --声明一个变量来保存雇员的数量
  
BEGIN
  --用某些job_id值初始化数组
  v_jobids := jobids_varray('FI_ACCOUNT', 'FI_MGR', 'ST_CLERK', 'ST_MAN');
  --用FOR...LOOP...END LOOP循环使用每个数组成员的值
  FOR i IN v_jobids.FIRST..v_jobids.LAST LOOP
  --针对数组中的每个岗位,决定该岗位的雇员的数量
  SELECT count(*) INTO v_howmany FROM employees WHERE job_id = v_jobids(i);
  DBMS_OUTPUT.PUT_LINE ( '岗位'||v_jobids(i)||
  '总共有'|| TO_CHAR(v_howmany) || '个雇员');
  END LOOP;
  
END;
  
————————在While循环中嵌套loop循环——————————————
  
/*求100至110之间的素数*/
  
DECLARE
  v_m NUMBER := 101;
  v_i NUMBER;
  v_n NUMBER := 0;
  
BEGIN
  WHILE v_m < 110 LOOP
  v_i := 2;
  LOOP
  IF mod(v_m, v_i) = 0 THEN
  v_i := 0;
  EXIT;
  END IF;
  v_i := v_i + 1;
  EXIT WHEN v_i > v_m - 1;
  END LOOP;
  IF v_i > 0 THEN
  v_n := v_n + 1;
  DBMS_OUTPUT.PUT_LINE('第'|| v_n || '个素数是' || v_m);
  END IF;
  v_m := v_m + 2;
  END LOOP;
  
END;


页: [1]
查看完整版本: oracle数据库深入(三)