plsql記錄型別

oracle_db發表於2010-10-26
CREATE OR REPLACE PROCEDURE TEST_RECORD1 AS
/*
*功能:用來說明自定義記錄的使用,在select into子句中使用記錄變數
*範圍:適用於處理單行多列的資料

*/
BEGIN
  --自定義記錄型別
  DECLARE
    TYPE EMP_RECORD_TYPE IS RECORD(
      ENAME EMP.ENAME%TYPE,
      EMPNO EMP.EMPNO%TYPE,
      JOB   EMP.JOB%TYPE);
 
    --使用自定義記錄型別建立變數
    EMP_RECORD EMP_RECORD_TYPE;
    --資料操作處理部分
  BEGIN
    SELECT ENAME, EMPNO, JOB INTO EMP_RECORD FROM EMP WHERE EMPNO = 7369;
    DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMPNO);
    DBMS_OUTPUT.PUT_LINE(EMP_RECORD.ENAME);
    DBMS_OUTPUT.PUT_LINE(EMP_RECORD.JOB);
  END;
END TEST_RECORD1;
 
 
CREATE OR REPLACE PROCEDURE TEST_RECORD2 AS
/*
*功能:用來說明自定義記錄的使用,在select into子句中使用記錄成員
*範圍:適用於處理單行多列的資料

*/
BEGIN
  --自定義記錄型別
  DECLARE
    TYPE EMP_RECORD_TYPE IS RECORD(
      ENAME EMP.ENAME%TYPE,
      EMPNO EMP.EMPNO%TYPE,
      JOB   EMP.JOB%TYPE);
    --使用自定義記錄型別建立變數
    EMP_RECORD EMP_RECORD_TYPE;
    --資料操作處理部分
  BEGIN
    SELECT ENAME, EMPNO, JOB INTO EMP_RECORD.ename,emp_record.empno,emp_record.job FROM EMP WHERE EMPNO = 7369;
    DBMS_OUTPUT.PUT_LINE(EMP_RECORD.EMPNO);
    DBMS_OUTPUT.PUT_LINE(EMP_RECORD.ENAME);
    DBMS_OUTPUT.PUT_LINE(EMP_RECORD.JOB);
  END;
END TEST_RECORD2;
 
 
"PROCEDURE TEST_RECORD3 AS
"
"  /*
"
"  *功能:用來說明自定義記錄的使用,在values子句中使用記錄變數
"
"  *範圍:適用於處理單行多列的資料
"

"
"  */
"
"BEGIN
"
"  --自定義記錄型別,dept_record代表DEPT表中的一行
"
"  DECLARE
"
"    DEPT_RECORD DEPT%ROWTYPE;
"
"    --為記錄成員給值
"
"  BEGIN
"
"    DEPT_RECORD.DEPTNO := '1';
"
"    DEPT_RECORD.DNAME  := 'test';
"
"    DEPT_RECORD.LOC    := 'life';
"
"    --資料操作處理部分
"
"    INSERT INTO DEPT VALUES DEPT_RECORD;
"
"    COMMIT;
"
"  END;
"
"END TEST_RECORD3;
"
"PROCEDURE TEST_RECORD4 AS
"
"  /*
"
"  *功能:用來說明自定義記錄的使用,在values子句中使用記錄成員
"
"  *範圍:適用於處理單行多列的資料
"

"
"  */
"
"BEGIN
"
"  --自定義記錄型別,dept_record代表DEPT表中的一行
"
"  DECLARE
"
"    DEPT_RECORD DEPT%ROWTYPE;
"
"    --為記錄成員給值
"
"  BEGIN
"
"    DEPT_RECORD.DEPTNO := '2';
"
"    DEPT_RECORD.DNAME  := 'test';
"
"    DEPT_RECORD.LOC    := 'life';
"
"    --資料操作處理部分
"
"    INSERT INTO DEPT VALUES (dept_record.deptno,dept_record.dname,dept_record.loc);
"
"    COMMIT;
"
"  END;
"
"END TEST_RECORD4;
"
 
"PROCEDURE TEST_RECORD5 AS
"
"  /*
"
"  *功能:用來說明自定義記錄的使用,在update set子句中使用記錄變數
"
"  *範圍:適用於處理單行多列的資料
"

"
"  */
"
"BEGIN
"
"  --自定義記錄型別,dept_record代表DEPT表中的一行
"
"  DECLARE
"
"    DEPT_RECORD DEPT%ROWTYPE;
"
"    --為記錄成員給值
"
"  BEGIN
"
"    DEPT_RECORD.DEPTNO := '3';
"
"    DEPT_RECORD.DNAME  := 'test';
"
"    DEPT_RECORD.LOC    := 'life';
"
"    --資料操作處理部分
"
"    UPDATE dept SET ROW = dept_record WHERE deptno =1;
"
"    COMMIT;
"
"  END;
"
"END TEST_RECORD5;
"
 
 
"PROCEDURE TEST_RECORD6 AS
"
"  /*
"
"  *功能:用來說明自定義記錄的使用,在update set子句中使用記錄成員
"
"  *範圍:適用於處理單行多列的資料
"

"
"  */
"
"BEGIN
"
"  --自定義記錄型別,dept_record代表DEPT表中的一行
"
"  DECLARE
"
"    DEPT_RECORD DEPT%ROWTYPE;
"
"    --為記錄成員給值
"
"  BEGIN
"
"    DEPT_RECORD.DEPTNO := '3';
"
"    DEPT_RECORD.DNAME  := 'test';
"
"    DEPT_RECORD.LOC    := 'cd';
"
"    --資料操作處理部分
"
"    UPDATE dept SET loc = dept_record.loc WHERE deptno =3;
"
"    COMMIT;
"
"  END;
"
"END TEST_RECORD6;
 
 
"PROCEDURE TEST_RECORD7 AS
"
"  /*
"
"  *功能:用來說明自定義記錄的使用,在delete子句中使用記錄成員
"
"  *範圍:適用於處理單行多列的資料
"

"
"  */
"
"BEGIN
"
"  --自定義記錄型別,dept_record代表DEPT表中的一行
"
"  DECLARE
"
"    DEPT_RECORD DEPT%ROWTYPE;
"
"    --為記錄成員給值
"
"  BEGIN
"
"    DEPT_RECORD.DEPTNO := '3';
"
"    DEPT_RECORD.DNAME  := 'test';
"
"    DEPT_RECORD.LOC    := 'cd';
"
"    --資料操作處理部分
"
"    DELETE FROM dept  WHERE deptno = dept_record.deptno;
"
"    COMMIT;
"
"  END;
"
"END TEST_RECORD7;
"
"
 
"PROCEDURE TEST_RECORD8 AS
"
"/*
"
"*功能:用來說明索引表的使用
"
"*範圍:適用於處理多行多列的資料
"
"
"
"*/
"
"BEGIN
"
"  --自定義記錄型別
"
"  DECLARE
"
"    TYPE ename_table_type IS TABLE OF emp.ename%TYPE INDEX BY BINARY_INTEGER;
"
"    ename_table ename_table_type;
"
"    --資料操作處理部分
"
"  BEGIN
"
"    SELECT ename INTO ename_table(-1) FROM emp WHERE empno=7369;
"
"    DBMS_OUTPUT.PUT_LINE(ename_table(-1));
"
"
"
"  END;
"
"END TEST_RECORD8;
"
 
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15720542/viewspace-676820/,如需轉載,請註明出處,否則將追究法律責任。

相關文章