萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> Oracle數據庫游標使用大全

Oracle數據庫游標使用大全

SQL是用於訪問ORACLE數據庫的語言,PL/SQL擴展和加強了SQL的功能,它同時引入了更強的程序邏輯。 PL/SQL支持DML命令和SQL的事務控制語句。DDL在PL/SQL中不被支持,這就意味作在PL/SQL程序塊中不能創建表或其他任何對象。較好的PL/SQL程序設計是在PL/SQL塊中使用象DBMS_SQL這樣的內建包或執行EXECUTE IMMEDIATE命令建立動態SQL來執行DDL命令,PL/SQL編譯器保證對象引用以及用戶的權限。

下面我們將討論各種用於訪問ORACLE數據庫的DDL和TCL語句。

查詢

SELECT語句用於從數據庫中查詢數據,當在PL/SQL中使用SELECT語句時,要與INTO子句一起使用,查詢的返回值被賦予INTO子句中的變量,變量的聲明是在DELCARE中。SELECT INTO語法如下:

SELECT [DISTICT|ALL]{*|column[,column,...]}
INTO (variable[,variable,...] |record)
FROM {table|(sub-query)}[alias]
WHERE............

PL/SQL中SELECT語句只返回一行數據。如果超過一行數據,那麼就要使用顯式游標(對游標的討論我們將在後面進行),INTO子句中要有與SELECT子句中相同列數量的變量。INTO子句中也可以是記錄變量。

%TYPE屬性

在PL/SQL中可以將變量和常量聲明為內建或用戶定義的數據類型,以引用一個列名,同時繼承他的數據類型和大小。這種動態賦值方法是非常有用的,比如變量引用的列的數據類型和大小改變了,如果使用了%TYPE,那麼用戶就不必修改代碼,否則就必須修改代碼。

例:

v_empno SCOTT.EMP.EMPNO%TYPE;
v_salary EMP.SALARY%TYPE;

不但列名可以使用%TYPE,而且變量、游標、記錄,或聲明的常量都可以使用%TYPE。這對於定義相同數據類型的變量非常有用。

DELCARE
V_A NUMBER(5):=10;
V_B V_A%TYPE:=15;
V_C V_A%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE
('V_A='||V_A||'V_B='||V_B||'V_C='||V_C);
END
SQL>/
V_A=10 V_B=15 V_C=
PL/SQL procedure successfully completed.
SQL>

其他DML語句

其它操作數據的DML語句是:INSERT、UPDATE、DELETE和LOCK TABLE,這些語句在PL/SQL中的語法與在SQL中的語法相同。我們在前面已經討論過DML語句的使用這裡就不再重復了。在DML語句中可以使用任何在DECLARE部分聲明的變量,如果是嵌套塊,那麼要注意變量的作用范圍。

例:

CREATE OR REPLACE PROCEDURE FIRE_EMPLOYEE (pempno in number)
 AS
  v_ename EMP.ENAME%TYPE;
 BEGIN
  SELECT ename INTO v_ename
  FROM emp
  WHERE empno=p_empno;
  INSERT INTO FORMER_EMP(EMPNO,ENAME)
  VALUES (p_empno,v_ename);
  DELETE FROM emp
  WHERE empno=p_empno;
  UPDATE former_emp
  SET date_deleted=SYSDATE
  WHERE empno=p_empno;
  EXCEPTION
   WHEN NO_DATA_FOUND THEN
   DBMS_OUTPUT.PUT_LINE('Employee Number Not Found!');
 END

  • 共7頁:
  • 上一頁
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 下一頁
copyright © 萬盛學電腦網 all rights reserved