PL/SQL PL/SQL 簡介 每一種資料庫都有這樣的一種語言,PL/SQL 是在Oracle裡面的一種編程語言,在Oracle內部使用的編程語言。我們知道SQL語言是沒有分支和迴圈的,而PL語言是為了補充SQL語言的,是帶有了分支和迴圈的語言。 PL/SQL 語法 基本數據類型聲明 declar... ...
PL/SQL
PL/SQL 簡介
每一種資料庫都有這樣的一種語言,PL/SQL 是在Oracle裡面的一種編程語言,在Oracle內部使用的編程語言。我們知道SQL語言是沒有分支和迴圈的,而PL語言是為了補充SQL語言的,是帶有了分支和迴圈的語言。
PL/SQL 語法
基本數據類型聲明
declare
v_name varchar2(20);
v_temp number(1);
v_count binary_integer := 0;
v_sal number(7,2) := 4000.00;
v_date date := sysdate;
v_pi constant number(3,2) := 3.14;
v_valid boolean := false;
v_name varchar2(20) not null := 'myname';
declare開頭聲明變數,v_name表示變數名字,通常以v_xxx這種格式命名變數,varchar2(20)表示變數類型, :=為賦值操作符。
在PL/SQL裡面boolean類型變數在定義的時候一定要給初始值,Oracle 裡面的put_line()不能列印boolean類型的值。
%type屬性聲明
還有一種聲明變數的方法:使用%type屬性。
declare
v_empno number(4);
v_empno2 emp.empno%type;
v_empno3 v_empno2%type;
begin
dbms_output.put_line('Test');
end;
使用emp表中empno欄位的類型,這種方式的好處是PL/SQL聲明的變數類型隨著表欄位類型的變化而變化。dbms_output.put_line('Test');表示輸出Test。
table類型聲明
table類型類似java中的數組類型。
declare
type type_table_emp_empno is table of emp.empno%type index by binary_integer;
v_empnos type_table_emp_empno;
begin
v_empnos(0) := 7369;
v_empnos(2) := 7839;
v_empnos(-1) := 9999;
dbms_output.put_line(v_empnos(-1));
end;
--type開頭
--類型名type_table_emp_empno
--is table of 表示table數據類型,相當於java裡面的數組Array[]
--emp.empno%type表示該類型數據裝的是emp表中empno類型的數據
--index by binary_integer 表示下表
--v_empnos type_table_emp_empno;使用type_table_emp_empno類型聲明變數v_empnos
record數據類型聲明
declare
type type_record_dept is record
(
deptno dept.deptno%type,
dname dept.dname%type,
loc dept.loc%type
);
v_temp type_record_dept;
begin
v_temp.deptno := 50;
v_temp.dname := 'aaaa';
v_temp.loc := 'bj';
dbms_output.put_line(v_temp.deptno || ' ' || v_temp.dname);
end;
/
--type type_record_dept is record聲明type_record_dept是record類型。
--該類型中有三個屬性deptno ,dname ,loc ,類型分別為dept表中deptno ,dname ,loc 三個欄位的類型。record類型類似java中的類,record類型可以存儲一條記錄。
-- v_temp type_record_dept;使用type_record_dept類型聲明變數v_temp。
另一種聲明record變數的方法:
declare
v_temp dept%rowtype;
begin
v_temp.deptno := 50;
v_temp.dname := 'aaaa';
v_temp.loc := 'bj';