PL/SQL 簡介及基本語法

PLSQL 簡介及基本語法

什麼是PL/SQL

PLSQL 是 Oracle 對 sql 語言的過程化擴展,指在 SQL 命令語言中增加了過程處理語句(如分支、循環等),使 SQL 語言具有過程處理能力。把 SQL 語言的數據操縱能力與過程語言的數據處理能力結合起來,使得 PLSQL 面向過程但比過程語言簡單、高效、靈活和實用

PL/SQL 是是由甲骨文公司在 90 年代初開發,以提高 SQL 的功能。
PL/SQL 是嵌入在 Oracle 數據庫中的三個關鍵的編程語言之一(只有 oracle支持)
PL/SQL 是過程語言(Procedural Language)與結構化查詢語言(SQL)結合而成的編程語言

PL/SQL 的工作原理

1、 PL/SQL 引擎接受 PL/SQL 塊並對其進行編譯執行
2、 該引擎執行所有過程語句
3、 將 SQL 語句發送給 Oracle 的 SQL 語句執行器

PL/SQL 基本結構及語法

--定義變量,說明部分 (變量說明,遊標申明,例外說明 〕
[declare] 
--程序體的開始
begin 語句序列
	(DML 語句)
	--異常處理
	[exception]
--程序體的結束
end;

示例:

--書寫第一個 plsql 程序塊 打印輸出字符串
begin 
	--打印輸出
	dbms_output.put_line('hello plsql'); 
end;

變量

變量名與 java 中變量名的定義一樣,長度不能超過 32 位
語法:變量名 變量類型
v_name varchar2(20);

變量基本類型:

varchar2() 32767 個字節
char() 32767
number(m,n)
date
boolean true/false/null
binary_integer 整型

變量賦值:

變量在定義時可以初始化,使用 := 賦值
v_name varchar2(20) := ‘hello’;

常見類型的變量定義並賦值

declare
	v_name varchar2(20) := 'hello';
	v_id binary_integer := 12;
	v_pai number(3,2) := 3.14;
	v_sex char(1) := 'm';
	v_married boolean := true;
	v_date date := sysdate;
begin
	dbms_output.put_line(v_name);
	dbms_output.put_line(v_id);
	dbms_output.put_line(v_pai);
	dbms_output.put_line(v_sex);
-- if 判斷 後面會學
	if v_married then
		dbms_output.put_line('married');
	else
		dbms_output.put_line('no marry');
	end if;
		dbms_output.put_line(v_date);
end;

變量的複合類型

表類型
類似於 java 中的數組,用來存儲某種特定數據類型的數據

語法:
type 表類型名稱 is table of 類型 index of binary_integer;

declare
	type table_type is table of varchar2(20) index by binary_integer;
	v_name table_type;
begin
	select name into v_name(0) from t_user where id=1;
	select name into v_name(1) from t_user where id=123;
		dbms_output.put_line(v_name(0));
end;

簡化的表類型
定義一個變量,其數據類型與已經定義的某個數據變量(尤其是表的某一列)類型一致時使用簡化編程

語法:%type
t_user.name%type; 表示類型是 t_user.name 字段的類型

declare
	v_name t_user.name%type;
begin
	select name into v_name from t_user where id=1;
	dbms_output.put_line(v_name);
end;

記錄類型
作用:可以用來存儲一條記錄 類似於 java 中的 對象數組

語法:
type 記錄類型名 is record(變量名 類型 [,變量名 類型…])

declare
	type row_type is record(v_id binary_integer,v_name varchar2(20));
	v_record row_type;
begin
	select id,name into v_record.v_id , v_record.v_name from t_user where id=1;
		dbms_output.put_line(v_record.v_id);
		dbms_output.put_line(v_record.v_name);
end;

作用:如果數據類型和數據庫中表的結構一致時可以使用記錄類型,返回一個記錄類型

簡寫:
%rowtype: 取表中的一條記錄中的字段類型組成一個記錄類型temp_emp%rowtype 表示當前變量的類型是跟 t_user 表中的記錄類型一致

declare
	v_user temp_emp%rowtype;
begin
	select id,name,age into v_user.id,v_user.name,v_user.agefrom t_user where id=1;
	dbms_output.put_line(v_user.id || v_user.name || v_user.age);
end;

傳參

定義形參使用& ,如果是字符類型需要使用’’引起來

declare
	type table_type is table of varchar2(20) index by binary_integer;
	v_name table_type;
begin
	select ename into v_name(0) from emp where empno=&no;
	dbms_output.put_line(v_name(0));
end;

更多相關知識請戳我主頁哦,點個贊也行哦,謝謝!

發佈了33 篇原創文章 · 獲贊 26 · 訪問量 1507
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章