2009年3月12日

          ORA-12514: TNS: 監(jiān)聽進(jìn)程不能解析在連接描述符中給出的服務(wù)名稱

          打開Net Manager,選中服務(wù)名稱,檢查服務(wù)標(biāo)識欄里的服務(wù)名輸入是否正確。該服務(wù)名必須與服務(wù)器端監(jiān)聽器配置的全局?jǐn)?shù)據(jù)庫名一致。

           

          方法二: 在TOAD登陸時(shí)使用全局名稱:

          zhouzhenhua:1521/javafan

          posted @ 2009-06-11 15:04 JavaBegger 閱讀(391) | 評論 (0)編輯 收藏

          個(gè)人評價(jià),僅供參考!

          人品不錯(cuò),挺讓人放心的,不會像有的男的看起來很花花的,還有就是沒有明顯的缺點(diǎn),這可是很重要的

          我現(xiàn)在看到的男的歪瓜裂棗的太多了

          posted @ 2009-05-07 17:40 JavaBegger 閱讀(170) | 評論 (0)編輯 收藏

          PL/SQL集合方法

          PL/SQL集合方法是用于操縱集合變量的內(nèi)置函數(shù)或過程。

          語法:

          collection_name.method_name[(parameter)]

          注意:集合方法extend和trim不適用于PL/SQL表

          1. exists

          2. count

          3. limit

          返回VARRAY變量所允許的最大元素個(gè)數(shù)。嵌套表和PL/SQL表的元素個(gè)數(shù)無限制,所以調(diào)用該方法時(shí)返回NULL。

          4. first和last

          第一個(gè)元素的下標(biāo),最后一個(gè)元素的下標(biāo)

          ename_table(ename_table.first)

          ename_table(ename_table.last)

          5. prior和next

          前一個(gè)元素的下標(biāo),后一個(gè)元素的下標(biāo)

          ename_table(ename_table.prior(1))

          ename_table(ename_table.next(1))

          6.extend

          該方法為PL/SQL集合變量增加元素,只適用于嵌套表和VARRAY

          注意:當(dāng)使用EXTEND增加元素時(shí),不能為未初始化的集合變量增加元素。

          EXTEND方法有三種調(diào)用方法:

          • EXTEND:添加一個(gè)null元素。
          • EXTEND(n):添加n個(gè)null元素
          • EXTEND(n,i):添加n個(gè)元素,元素值與第i個(gè)元素相同。

          7. trim

          該方法用于從集合變量尾部刪除元素,并且只適用于嵌套表和VARRAY

          TRIM共有兩種調(diào)用方法:

          • TRIM:       從集合變量尾部刪除一個(gè)元素。
          • TRIM(n):   從集合變量尾部刪除n個(gè)元素。

          8. delete

          用于刪除特定元素,只適用于嵌套表和PL/SQL表

          DELETE有三種調(diào)用方法:

          • DELETE:         刪除所有的元素
          • DELETE(n):    刪除第n個(gè)元素。
          • DELETE(m,n):刪除m~n之間所有的元素。

          posted @ 2009-03-18 11:14 JavaBegger 閱讀(386) | 評論 (0)編輯 收藏

          PL/SQL集合

          一,PL/SQL表

          它只能作為PL/SQL類型,不能作為表列類型。

          下標(biāo)可以為負(fù)值,并且元素個(gè)數(shù)無限制。

          下標(biāo)類型key_type: 包括BINARY_INTEGER、PLS_INTEGER、VARCHAR2。

          語法:

          TYPE  type_name  IS  TABLE  OF  element_type

          [NOT  NULL]  INDEX  BY key_type;

          identifier type_name;

           

          例如:

          DECLARE
             TYPE category_table_type IS TABLE OF VARCHAR2 (40)
                INDEX BY VARCHAR2 (40);

             category_table   category_table_type;
          BEGIN
             category_table ('長沙') := '長沙,我愛你!';
             DBMS_OUTPUT.put_line (category_table ('長沙'));
          END;

           

          第二,嵌套表

          可以作為表列的數(shù)據(jù)類型使用。

          當(dāng)使用嵌套表元素時(shí),需要使用構(gòu)造方法初始化嵌套表變量。

          下標(biāo)從1開始計(jì)算。

           

          語法:

          TYPE type_name IS TABLE OF element_type;

          identifier  type_name;

           

          例子:

          DECLARE
             TYPE category_table_type IS TABLE OF tb_out_service.servicename%TYPE;

             category_table   category_table_type;
          BEGIN
             category_table := category_table_type ('全省', '長沙', '常德');

             SELECT servicename
               INTO category_table (3)
               FROM tb_out_service
              WHERE serviceid = '&serviceid';

             DBMS_OUTPUT.put_line (category_table (1));
             DBMS_OUTPUT.put_line (category_table (2));
             DBMS_OUTPUT.put_line (category_table (3));
          END;

           

          第三,變長數(shù)組(VARRAY)

          需要使用構(gòu)造方法初始化VARRAY變量。

          語法:

          TYPE type_name is VARRAY(size_limit) OF element_type [NOT NULL];

          identifier type_name;

          posted @ 2009-03-18 10:50 JavaBegger 閱讀(228) | 評論 (0)編輯 收藏

          PL/SQL記錄

          第一,定義PL/SQL記錄

          1. 自定義PL/SQL記錄

          2. 使用%ROWTYPE屬性定義記錄變量

          舉例:

          -----------------------------------------------

          DECLARE
          --自定義記錄類型
             TYPE emp_record_type IS RECORD (
                serviceid    tb_out_service%TYPE,
                sericename   tb_out_service%TYPE
             );

             emp_record        emp_record_type;


             --使用%ROWTYPE屬性定義記錄變量
             category_record   tb_out_service%ROWTYPE;
          BEGIN
             NULL;
          END;

          第二,使用PL/SQL記錄

          DECLARE
             --使用%ROWTYPE屬性定義記錄變量
             category_r   tb_out_service%ROWTYPE;

          BEGIN

              ...

          UPDATE tb_out_service
                SET ROW = category_r                                     --注意ROW關(guān)鍵字
              WHERE serviceid = category_r.serviceid;

              ...

          INSERT INTO tb_out_service
                  VALUES category_r;              --在values子句中使用記錄成員播入數(shù)據(jù)。

              ...

          END;

          posted @ 2009-03-18 09:45 JavaBegger 閱讀(187) | 評論 (0)編輯 收藏

          使用事務(wù)控制語句

          commit

          rollback

          savepoint   a1

          posted @ 2009-03-17 11:08 JavaBegger 閱讀(200) | 評論 (0)編輯 收藏

          SQL游標(biāo)

          隱含游標(biāo):專門處理SELECT INTO、INSERT、UPDATE以及DELETE語句。

          顯示游標(biāo):用于處理多行的SELECT語句。

          當(dāng)在PL/SQL塊中執(zhí)行INSERT、UPDATE及DELETE語句時(shí),為了取得DML語句作用的結(jié)果,需要使用SQL游標(biāo)屬性。

          第一,游標(biāo)的4種屬性

          1. SQL%ISOPEN

          該屬性永遠(yuǎn)都是false,沒有實(shí)際意義。

          2. SQL%FOUND

          語句是否操作成功。當(dāng)SQL語句有作用行時(shí)為TRUE.

          3. SQL%NOTFOUND

          LOOP

          FETCH  emp_cursor  INTO   v_name, v_deptno;

          EXIT  WHEN  emp_cursor%NOTFOUND;

          ...

          END LOOP;

           

          4. SQL%ROWCOUNT

          返回SQL語句所作用的總計(jì)行數(shù)。

          該屬性用于返回已提取的實(shí)際行數(shù)。

           

          第二,顯示游標(biāo)專用于處理SELECT語句返回的多行數(shù)據(jù)。

          • 定義游標(biāo):

          CURSOR  cursor_name  IS  select_statement;

          • 打開游標(biāo):

          open  cursor_name;

          • 提到數(shù)據(jù):

          FETCH  cursor_name  INTO  var1[, var2, ...];

          • 關(guān)閉游標(biāo):

          CLOSE  cursor_name;

          例子:

          DECLARE
             CURSOR category_cursor
             IS
                SELECT *
                  FROM tb_out_service t
                 WHERE t.servicename LIKE '長沙%';

             TYPE category_table_type IS TABLE OF tb_out_service%ROWTYPE
                INDEX BY BINARY_INTEGER;

             category_table   category_table_type;
             i                INT;
          BEGIN
             OPEN category_cursor;

             LOOP
                i := category_cursor%ROWCOUNT + 1;

                FETCH category_cursor
                 INTO category_table (i);

                EXIT WHEN category_cursor%NOTFOUND;
                DBMS_OUTPUT.put_line (   RPAD (category_table (i).serviceid, 30)
                                      || '  '
                                      || category_table (i).servicename
                                     );
             END LOOP;

             CLOSE category_cursor;
          END;

           

          第三,游標(biāo)FOR循環(huán)

          語法:

          FOR  record_name  IN  cursor_name  LOOP

          statement;

          ...

          END  LOOP;

          注意:當(dāng)使用游標(biāo)FOR循環(huán)時(shí),既可以在定義部分定義游標(biāo),也可以直接在FOR循環(huán)中使用SELECT語句。

           

          第四,參數(shù)游標(biāo)

          CURSOR cursor_name(parameter_name datatype) is select_statement;

          OPEN cursor_name(parameter_value)

          注意:

          定義參數(shù)只能指定數(shù)據(jù)類型,不能指定長度。

          另外,應(yīng)該在游標(biāo)的select語句的where子句中引用游標(biāo)參數(shù),否則失去了定義參數(shù)游標(biāo)的意義。

          ---------------------------------------------------------------------------------------------------------------------

          DECLARE
             CURSOR category_cursor (NAME VARCHAR2)
             IS
                SELECT *
                  FROM tb_out_service t
                 WHERE t.servicename LIKE NAME || '%';
          BEGIN
             FOR category_record IN category_cursor ('吉首')
             LOOP
                DBMS_OUTPUT.put_line (   RPAD (category_record.serviceid, 30)
                                      || '  '
                                      || category_record.servicename
                                     );
             END LOOP;
          END;

           

          第五,更新或刪除游標(biāo)行

          語法

          CURSOR cursor_name IS select_statement

          FOR UPDATE [OF column_reference]  [NOWAIT];

          UPDATE table_name SET column=..  WHERE CURRENT OF cursor_name;

          DELETE FROM table_name WHERE CURRENT OF cursor_name;

           

          注意

          1. OF子句的格式:column_reference為table_name.column_name

          2. WHERE CURRENT OF cursor_name, 更新或者刪除游標(biāo)所在行的數(shù)據(jù)。

          3. 在使用游標(biāo)更新或刪除數(shù)據(jù)時(shí),定義游標(biāo)必須帶有FOR  UPDATE子句,并且在更新或者刪除游標(biāo)時(shí)必須帶有WHERE CURRENT OF 子句。

          當(dāng)查詢語句涉及到多張表時(shí),如果不帶有OF子句,會在多張表上同時(shí)加鎖,如果只在特定的表上加鎖,需要帶有OF子句。

           

          DECLARE
             CURSOR category_cursor (NAME VARCHAR2)
             IS
                SELECT        *
                         FROM tb_out_service t
                        WHERE t.servicename LIKE NAME || '%'
                FOR UPDATE OF t.querystr;

             v_name   CONSTANT VARCHAR2 (20) := '長沙';
          BEGIN
             FOR category_record IN category_cursor (v_name)
             LOOP
                IF INSTR (category_record.servicename, v_name || '——') <> 1
                THEN
                   DBMS_OUTPUT.put_line (   'delete: '
                                         || RPAD (category_record.serviceid, 30)
                                         || '  '
                                         || category_record.servicename
                                        );

                   DELETE FROM tb_out_service
                         WHERE CURRENT OF category_cursor;
                ELSE
                   DBMS_OUTPUT.put_line (   'upate: '
                                         || RPAD (category_record.serviceid, 30)
                                         || '  '
                                         || category_record.servicename
                                        );

                   UPDATE tb_out_service t
                      SET t.querystr = v_name || '——' || t.servicename
                    WHERE CURRENT OF category_cursor;
                END IF;
             END LOOP;
          END;

           

          第六, 游標(biāo)變量

          游標(biāo)變量是基于REF CURSOR類型所定義的變量,它實(shí)際上是指向內(nèi)存地址的指針。顯式游標(biāo)只能定義靜態(tài)游標(biāo),而游標(biāo)變量可以在打開時(shí)指定其所對應(yīng)的SELECT語句,從而實(shí)現(xiàn)動態(tài)游標(biāo)。

          • 定義游標(biāo):

          TYPE  ref_type_name  IS  REF  CURSOR  [RETURN  return_type];

          cursor_variable  ref_type_name;

          • 打開游標(biāo):

          OPEN  cursor_name  FOR  select_statement;

          • 提到數(shù)據(jù):

          FETCH  cursor_variable  INTO  var1[, var2, ...];

          • 關(guān)閉游標(biāo):

          CLOSE  cursor_variable;

          注意:

          不能在遠(yuǎn)程子程序中使用游標(biāo)變量。

          當(dāng)指定子查詢時(shí),不能帶有FOR UPDATE子句。

          當(dāng)指定RETURN子句時(shí),返回類型必須使用PL/SQL記錄類型。

          例子:

          DECLARE
             TYPE category_cursor_type IS REF CURSOR
                RETURN tb_out_service%ROWTYPE;

             category_cursor   category_cursor_type;
             category_record   tb_out_service%ROWTYPE;
             v_name   CONSTANT VARCHAR2 (40)            := '長沙';
          BEGIN
             OPEN category_cursor FOR
                SELECT *
                  FROM tb_out_service t
                 WHERE t.servicename LIKE v_name || '%';

             LOOP
                FETCH category_cursor
                 INTO category_record;

                EXIT WHEN category_cursor%NOTFOUND;
                DBMS_OUTPUT.put_line (   RPAD (category_record.serviceid, 30)
                                      || '  '
                                      || category_record.servicename
                                     );
             END LOOP;
          END;

          posted @ 2009-03-17 11:07 JavaBegger 閱讀(631) | 評論 (0)編輯 收藏

          在PL/SQL塊中可以使用的SQL函數(shù)

          編寫PL/SQL時(shí),可以直接使用大多數(shù)的單行SQL函數(shù),這些單行函數(shù)包括數(shù)字函數(shù)、字符函數(shù)、轉(zhuǎn)換函數(shù)及日期函數(shù)。

          注意:某些SQL函數(shù)只能在SQL語句中引用,而不能直接在PL/SQL語句中引用,這些SQL函數(shù)包括GREATEST、LEAST、DECODE及所有的分組函數(shù)(如SUM)。

          posted @ 2009-03-16 10:51 JavaBegger 閱讀(229) | 評論 (0)編輯 收藏

          oracle數(shù)據(jù)庫約束

          約束用于確保數(shù)據(jù)庫數(shù)滿足業(yè)務(wù)規(guī)則。

          約束包括:NOT NULL,UNIQUE,PRIMARY KEY,F(xiàn)OREIGN KEY以及CHECK等5種類型。

          建立主鍵約束和唯一約束時(shí),Oralce會基于約束列自動建立唯一索引;主鍵約束不允許為NULL,唯一約束允許為NULL。

          一張表只能建立一個(gè)主鍵約束。

          建表約束:NOT NULL只能在列級定義;其它4種既可以在列級定義,也可以在表級定義。復(fù)合主鍵約束只能在表級定義。

          維護(hù)約束:增加NOT NULL約束時(shí)必須使用MODIFY子句,而增加其它約束時(shí)需要使用ADD子句。

           

          第一, 定義約束

          ---------------------------------------------

          語法

          CREATE  TABLE  [SCHEMA.]table_name(

          column_name  datatype  [DEFAULT  expr]  [column_constraint],

          ...

          [table_constraint][, ...]

          );

           

          例子

          CREATE TABLE tt_user_info
          (
            ID    VARCHAR2(20 BYTE),
            NAME  VARCHAR2(20 BYTE)                       NOT NULL,
            category_id VARCHAR2(20 BYTE)  REFERENCES tb_out_service(serviceid),
            remark   VARCHAR2(1000)
          );

          ALTER TABLE tt_user_info ADD (
            CHECK ( LENGTH(NAME)>2),
            PRIMARY KEY (ID),
            UNIQUE (NAME)
            );

           

          說明

          1. NOT NULL,非空約束

          not null

          2. UNIQUE,唯一約束

          UNIQUE (COL_NAME)

          3. PRIMARY KEY,主鍵約束

          primary key (col_name1 [, col_name2])

          4. FOREIGN KEY,外鍵約束

          它有三種類型:

          references  primary_table(primary_col)

          on delete cascade

          on delete set null

          5. CHECK,檢查約束

          check (money > 1000)

           

          第二, 維護(hù)約束

          ----------------------------------------

          1. 增加約束

          NOT NULL使用ALTER MODIFY子句,其它的使用ALTER  ADD子句

          -------------------------------

          CREATE TABLE tt_user(NAME VARCHAR2(20));

          ALTER TABLE tt_user MODIFY user_name NOT NULL;
          ALTER TABLE tt_user ADD CONSTRAINT constraint_name UNIQUE(NAME);
          ALTER TABLE tt_user ADD CONSTRAINT constraint_name PRIMARY KEY(NAME);
          ALTER TABLE tt_user ADD parentid VARCHAR2(20)
              CONSTRAINT constraint_name
                  REFERENCES tb_out_service(serviceid);

           

          2. 修改約束名

          ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_constraint_name

           

          3. 刪除約束

          ALTER TABLE table_name DROP CONSTRAINT constraint_name

           

          4. 禁止約束

          ALTER TABLE table_name DISABLE CONSTRAINT constraint_name  [CASCADE];

           

          5.激動約束

          ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

           

          第三. 顯示約束信息

          所有約束信息

          SELECT *
            FROM user_constraints

           

          用戶約束所對應(yīng)的表列

          SELECT *
            FROM user_cons_columns;

          posted @ 2009-03-12 15:03 JavaBegger 閱讀(934) | 評論 (0)編輯 收藏

          Oracle建立臨時(shí)表

          臨時(shí)表分為兩種,它們只在事務(wù)或者會話內(nèi)有效。

          ------------------------------------

          A. 事務(wù)臨時(shí)表(缺省):

          CREATE GLOBAL TEMPORARY TABLE table_name(col_name INT);

          CREATE GLOBAL TEMPORARY TABLE table_name(col_name INT) ON COMMIT DELETE ROWS;

          ------------------------------------

          B. 會話臨時(shí)表:

          CREATE GLOBAL TEMPORARY TABLE table_name(col_name INT) ON COMMIT PRESERVE ROWS;

          posted @ 2009-03-12 11:43 JavaBegger 閱讀(797) | 評論 (0)編輯 收藏

          oracle數(shù)據(jù)庫表刪除操作

          A. 刪除數(shù)據(jù)

          -----------------------------------------

          方法一:

          delete(DML)

          只是刪除數(shù)據(jù),并沒有釋放空間

          操作可以回退

          例如:

          DELETE FROM table_name;

           

          方法二:

          truncate table(DDL)

          刪除數(shù)據(jù),釋放表空間,操作不能回退

          例如:

          TRUNCATE  TABLE table_name;

           

          B. 刪除庫表

          ------------------------------------------

          DROP TABLE table_name [CASCADE CONSTRAINTS] [purge]

          CASCADE CONSTRAINTS: 表示是否級聯(lián)刪除外鍵約束

           

          C. 恢復(fù)刪除的庫表(10g)

          FLASHBACK TABLE table_name TO BEFORE DROP;

          posted @ 2009-03-12 11:35 JavaBegger 閱讀(414) | 評論 (0)編輯 收藏

          oracle中的幾個(gè)數(shù)據(jù)字典視圖

               摘要:   閱讀全文

          posted @ 2009-03-12 11:20 JavaBegger 閱讀(199) | 評論 (0)編輯 收藏

          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 乌拉特中旗| 临夏县| 凭祥市| 柘城县| 徐汇区| 镇远县| 长武县| 克山县| 南城县| 浪卡子县| 方山县| 南宫市| 永仁县| 诏安县| 佳木斯市| 察哈| 崇州市| 左权县| 栖霞市| 明水县| 兴海县| 深州市| 六枝特区| 岚皋县| 二连浩特市| 紫金县| 墨江| 朔州市| 德化县| 霍邱县| 济宁市| 皋兰县| 罗甸县| 千阳县| 泸定县| 红安县| 盱眙县| 阳曲县| 莫力| 泌阳县| 临海市|