posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          oracle10g pl/sql簡介

          Posted on 2008-02-24 11:41 semovy 閱讀(315) 評論(0)  編輯  收藏 所屬分類: Oracle數據庫方面

          Pl/sql基礎知識:
          (1)pl/sql的塊結構
          (2)變量的聲明
          (3)字符值,字符和保留字
          (4)pl/sql語言使用的數據類型
          (5)隱藏代碼的Wrpper實用程序
          了解:
          DDL:data definition language的縮寫 包括:alter,create,drop,truncate,grant,revoke
          DML:data manipulation language的縮寫 包括:insert update delete
          目前:oracle10g存儲的數據量可以達到EB級,1EB=1024PB,1PB=1024TB,1TB=1024G,1G=1024M,1M=1024KB,1KB=1024B 1B=8b
          pl/sql的數據類型:
          標量類型:字符/字符串類型,數字類型,布爾類型,日期/時間類型
          引用類型:ref cursor(游標變量),ref(可以理解為一個指針,只是該指針指向的內容是對象表,或對象視圖里的一個對象實例)
          復合類型:記錄,嵌套表,index-by表,varrays
          LOB大對象類型:oracle 10前可以存儲小于4G的二進制或字符數據,oracle 10可以存儲最大長度是:8T-128T
          代碼塊的基本結構:
          begin
          null;--如果沒有null會出現異常
          end
          ----------------------

          --匿名塊的實例:
          CREATE TABLE authors (
             id          NUMBER PRIMARY KEY,
             first_name VARCHAR2(50),
             last_name   VARCHAR2(50)
          );

          CREATE TABLE books (
             isbn       CHAR(10) PRIMARY KEY,
             category   VARCHAR2(20),
             title      VARCHAR2(100),
             num_pages NUMBER,
             price      NUMBER,
             copyright NUMBER(4),
             author1    NUMBER CONSTRAINT books_author1
                       REFERENCES authors(id),
             author2    NUMBER CONSTRAINT books_author2
                       REFERENCES authors(id),
             author3    NUMBER CONSTRAINT books_author3
                       REFERENCES authors(id)
          );

          CREATE TABLE inventory (
             isbn          CHAR(10) CONSTRAINT fk_isbn REFERENCES books (isbn),
             status        VARCHAR2(25) CHECK (status IN ('IN STOCK', 'BACKORDERED', 'FUTURE')),
             status_date   DATE,
             amount        NUMBER
          );
          INSERT INTO authors (id, first_name, last_name)
             VALUES (1, 'Marlene', 'Theriault');

          INSERT INTO authors (id, first_name, last_name)
             VALUES (2, 'Rachel', 'Carmichael');

          INSERT INTO authors (id, first_name, last_name)
             VALUES (3, 'James', 'Viscusi');

          INSERT INTO books (isbn, category, title, num_pages, price, copyright, author1, author2, author3)
             VALUES ('72121203', 'Oracle Basics', 'Oracle DBA 101', 563, 39.99, 1999, 1, 2, 3);

          INSERT INTO inventory (isbn, status, status_date, amount)
             VALUES ('72121203', 'BACKORDERED', TO_DATE('06-JUN-2004', 'DD-MON-YYYY'), 1000);

          SET SERVEROUTPUT ON ESCAPE OFF--當退出該匿名塊時就關閉SERVEROUTPUT
          DECLARE
              v_first_name authors.first_name%TYPE;   --聲明和定義變量
              v_last_name authors.last_name%TYPE;
              v_row_count PLS_INTEGER := 0;
              CURSOR auth_cur IS    --聲明游標
                 SELECT a.first_name, a.last_name, count(b.title)
                 FROM authors a, books b
                 WHERE a.id = b.author1
                 OR a.id = b.author2
                 OR a.id = b.author3
                 GROUP BY a.first_name, a.last_name
                 HAVING count(b.title) > 0
                 ORDER BY a.last_name;
          BEGIN
              DBMS_OUTPUT.ENABLE(1000000);
              OPEN auth_cur;   --打開游標
              LOOP
                 FETCH auth_cur INTO v_first_name, v_last_name, v_row_count;--推進游標
                 EXIT WHEN auth_cur%NOTFOUND;   --當沒有發現數據時,推出
                 DBMS_OUTPUT.PUT_LINE(v_last_name
                                      ||', '
                                      ||v_first_name
                                      ||' wrote '
                                      ||v_row_count
                                      ||' book(s).');
              END LOOP;   
              CLOSE auth_cur;   --關閉游標
          EXCEPTION            --異常處理部分
              WHEN OTHERS       --others表示其它別的異常
                 THEN
                 DBMS_OUTPUT.PUT_LINE(SQLERRM);
          END;

          主站蜘蛛池模板: 米脂县| 敖汉旗| 洞口县| 晋州市| 浦北县| 申扎县| 鄂温| 苏尼特右旗| 准格尔旗| 瑞安市| 孟津县| 醴陵市| 建宁县| 北辰区| 安岳县| 庐江县| 克拉玛依市| 天柱县| 肇州县| 定西市| 湘阴县| 特克斯县| 麻栗坡县| 平潭县| 康平县| 普定县| 孝义市| 宜州市| 唐海县| 徐汇区| 兴山县| 郁南县| 新晃| 建德市| 高密市| 万安县| 利津县| 霞浦县| 集安市| 任丘市| 新沂市|