pl/sql 記錄型別
阿新 • • 發佈:2018-11-23
定義記錄型別
TYPE 型別名稱 IS RECORD(
成員名稱 資料型別[[NOT NULL][:= 預設值] 表示式],
....
);
使用記錄型別返回接受查詢結果
SQL> DECLARE 2 v_emp_empno emp.empno%TYPE; 3 v_emp_ename emp.ename%TYPE; 4 v_emp_job emp.job%TYPE; 5 v_emp_hiredate emp.hiredate%TYPE; 6 v_emp_sal emp.sal%TYPE; 7 v_emp_comm emp.comm%TYPE; 8 BEGIN 9 v_emp_empno:=&inputempno; 10 SELECT ename,job,hiredate,sal,comm INTO 11 v_emp_ename,v_emp_job,v_emp_hiredate,v_emp_sal,v_emp_comm 12 FROM emp WHERE empno=v_emp_empno; 13 DBMS_OUTPUT.put_line('僱員編號:'||v_emp_empno||',姓名:'||v_emp_ename||'.職業:' 14 ||v_emp_job||',僱傭日期:'||TO_CHAR(v_emp_hiredate,'yyyy-mm-dd')||',基本工資:' 15 ||v_emp_sal||',佣金:'||NVL(v_emp_comm,0)); 16 EXCEPTION 17 WHEN OTHERS THEN 18 RAISE_APPLICATION_ERROR(-20007,'此僱員不存在!'); 19 END; 20 / 輸入 inputempno 的值: 7369 原值 9: v_emp_empno:=&inputempno; 新值 9: v_emp_empno:=7369; 僱員編號:7369,姓名:SMITH.職業:CLERK,僱傭日期:1980-12-17,基本工資:800,佣金:0 PL/SQL 過程已成功完成。
使用者自定義型別
SQL> DECLARE 2 TYPE dept_type IS RECORD( 3 deptno dept.deptno%TYPE:=80, 4 dname dept.dname%TYPE, 5 loc dept.loc%TYPE 6 ); 7 v_dept dept_type; 8 BEGIN 9 v_dept.dname:='abx'; 10 v_dept.loc:='china'; 11 DBMS_OUTPUT.put_line('部門編號:'||v_dept.deptno||'名稱:'||v_dept.dname||'位置:'||v_dept.loc); 12 END; 13 / 部門編號:80名稱:abx位置:china PL/SQL 過程已成功完成。
使用記錄型別儲存資料
原始資料
SQL> select *from dept; DEPTNO DNAME LOC ---------- ---------------------------- -------------------------- 80 chais sddsf 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
SQL> select *from dept;
DEPTNO DNAME LOC
---------- ---------------------------- --------------------------
80 hello,world china
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON