oracle PL/SQL编程基础
? ? ? ?
目錄
1 PL/SQL介紹? ? ? ??
1.1 PL/SQL基礎結構
1.2 PL/SQL 注釋
1.3 PL/SQL常量和變量
1.4條件語句
1.5 循環語句
過完節由于疫情公司沒有進行上班,在收拾房屋的過程中找到一本關于oracle基礎的書籍,就想著看鞏固下oracle基礎,在此進行記錄。
1 PL/SQL介紹? ? ? ??
? ? ? ? PL/SQL是在日常工作中,使用oracle數據庫常用的一種編程語言,是oracle公司對標準SQL語言的過程化擴展,在SQL語句的基礎上增加了編程語言的特點。主要是把數據操作和查詢語句放在PL/SQL的代碼塊中,通過邏輯判斷實現復雜的業務邏輯或者功能。
1.1 PL/SQL基礎結構
?在編程過程中,PL/SQL是由聲明部分、程序代碼、異常處理部分組成,主要是以塊為基礎單位。語法結構如下:
? declare? ? ? ? --聲明一些變量、常量、數據類型等
? ?begin
? ? ? -- 主要程序體。主要是函數或者存儲過程
? ?exception? ? ?--? 異常處理 當編寫的代碼塊出現異常時,可以在此處編寫處理異常代碼
?? end;? ? ? ? ? ? ?-- 主程序體結束。
注意:在PL/SQL塊中每條語句都必須以分號進行結束,每一個塊由declare或者begin開始,以end結束。
1.2 PL/SQL 注釋
在PL/SQL程序塊中有時候內容會比較長,這時候添加注釋是一個好的編程習慣,這樣可以提高程序的可讀性。在PL/SQL程序塊中注釋分為單行注釋和多行注釋
單行注釋:有連接字符-- 開始,注釋范圍為從連接字符開始,到行的末尾
多行注釋:在編寫程序塊的過程中,有時候由于業務邏輯較為復雜,則需要的注釋可能超過一行,這時候就要使用多行注釋。有/* 開頭 */結束
1.3 PL/SQL常量和變量
在編寫PL/SQL程序塊的過程中,經常使用到常量和變量,這時候必須要聲明這些常量和變量,然后才能進行使用。
變量:在程序執行的過程中其值時可以變化的數據存儲結構,定義變量需要定義變量名和數據類型,同時也可以為變量設置初始值
語法:變量名 數據類型(變量長度):=初始值? ?declare name varchar2(30):='是是是'
常量:在程序的執行過程中不可改變的數據存儲結構
語法:常量名 constant 數據類型:=常量值 year constant varchar2(32):='2020'
命名規則
在定義常量和變量時,需要聲明其為哪種數據類型,對數據類型進行簡單介紹
1 字符類型:字符類型變量主要用來存儲字符串或者字符數據,主要包括把人varchar2、char、long、nchar和nvarchar2等。
聲明語法:varchar2(lenggth)? ?
varchar2 最大可以存儲32767個字節,char類型最大長度同為32767個字節,與varchar2不同的是長度可以不進行指定,默認為1。如果賦給char類型的值不足時,則后面用空格自動補全。數據庫類型的varchar2最大長度為4000個字節,char2000字節,long長度最大可達到2G。
2 數值類型:主要用來存儲整數或者實數,包含number、INTEGER、BINARY_FLOAT等
NUMBER(p[,s]):1-22字節。P(Precison)取值范圍1到38,S(Scale)取值范圍-84到127.可以存放數據范圍為10^130~10^126(不包含此值).正值s為小數位數,負值s表示四舍五入到小數點左部多少位。
例:123.89? NUMBER(6,1) 123.9 NUMBER(6,-1) 120
INTEGER類型:INTEGER是NUMBER的子類型,它等同于NUMBER(38,0),用來存儲整數。若插入、更新的數值有小數,則會被四舍五入。
Oracle 數據庫提供了專為浮點數的兩種數值數據類型:
BINARY_FLOAT 是 32 位、 單精度浮點數字數據類型??梢灾С种辽?位精度,每個 BINARY_FLOAT 的值需要 5 個字節,包括長度字節。
BINARY_DOUBLE 是為 64 位,雙精度浮點數字數據類型。每個 BINARY_DOUBLE 的值需要 9 個字節,包括長度字節。
在數字的列中,浮點數有小數精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮點數有二進制的精度。二進制浮點數支持的特殊值無窮大和 NaN (不是數字)。
3 布爾類型:主要用于控制程序流程,一個布爾類型的值可以是true、false、null。
4 %type類型或者%rowtype 類型
在PL/SQL編程過程中,為了保持某個變量的數據類型和表中某一個字段類型一致,可以定義%type。%type類型隱式的將變量的數據類型指定為表中對應列的數據類型
語法:variable_name table_name.column_name%type??
如:
v_Name?students.name%TYPE;通過使用%TYPE,v_name變量將同students表的name列的類型相同(可以理解為將兩者邦定起來)。
%rowtype :在編程語言過程中%type主要針對表中的某一列,%rowtype則針對表中的一行數據,使用%rowtype定義的變量可以存儲表中的一行數據。
語法:variable_name table_name%rowtype
如:
v_RoomRecord rooms%ROWTYPE;將定義一個記錄,該記錄中的字段將與rooms表中的列相對應。
5 記錄類型
記錄類型與表的行結構相似,記錄類型定的的變量可以存儲一個或者多個字段組成的一行數據,而不必將每一列都單獨列出
語法:type record_name is record(filed_name data_type)
record_name 記錄類型的名稱
is record 表示創建的時記錄類型
filed_name 記錄類型的字段名
data_type? 合法的數據類型
如
type new_type is record(empno number(4),rname varchar2(10)); -- 定義記錄類型vemp new_type --使用該類型定義變量select?empno,ename into vemp from table_name -- 復制1.4條件語句
在PL/SQL編程的過程中,需要進行邏輯判斷,這時候就要使用條件語句進行判斷。
if 條件語句
語法:if(條件表達式) then?
? ? ? ? ? ?(執行語句1)
? ? ? ? ? ?elseif (條件表達式2) then
? ? ? ? ? ?(執行語句2)? .......
? ? ? ? ? ?else?
? ? ? ? ? ? end if;
注意:elseif 與其他編程語言的else if 有區別
case 條件語句
語法: case(變量)
? ? ? ? ? ? ?when (表達式1) then? 值 1
? ? ? ? ? ? ?when (表達式2) then? 值 2
? ? ? ? ? ? ?when (表達式n) then? 值 n
? ? ? ? ? ? ?else? 值n+1
? ? ? ? ? ? ?end;
搜索case 表達式
? ? ? ? ? ? case
? ? ? ? ? ? ? ? ? when condtion1 then? result1;
? ? ? ? ? ? ? ? ? when condtion2?then? result2;
? ? ? ? ? ? ? ? ? ?when condtionN?then? resultN;
? ? ? ? ? ? ?else? default result;
? ? ? ? ? ? ?end case;
1.5 循環語句
循環是程序控制結構,可以進行遍歷一系列PL/SQL語句,并可以在0次和無限次之間執行這些語句。循環語句一般由循環體和結束條件組成,循環體指重復執行的語句,結束條件則用于終止循環。
1 循環語句loop .......exit .......end
此語句重復執行循環體中的程序塊,直到執行到exit退出循環
語法: loop
? ? ? ? ? ? ? ? ? (程序塊1)
? ? ? ? ? ? ? ? ? ? if(條件表達式) then
? ? ? ? ? ? ? ? ? ? exit
? ? ? ? ? ? ? ? ? ? end if
? ? ? ? ? ? ? ? ? (程序塊2)
? ? ? ? ? ? ?end loop;
如:
declarevar1 integer:=1var2 integer:=2 beginloopvar2:=var1+var2if var2 = 50 thenexitend if;end loop; end;2循環語句loop .......exit? when.......end
此語句重復執行循環體中的程序塊,直到執行到exit when 后面的判斷語句退出循環
語法: loop
? ? ? ? ? ? ? ? ? (程序塊1)
? ? ? ? ? ? ? ? ? ? exit when(表達式)
? ? ? ? ? ? ? ? ?(程序塊2)
? ? ? ? ? ? ?end loop;
declarevar1 integer:=1var2 integer:=2 beginloopvar2:=var1+var2exit when var2 = 50;var1:=var1+1end loop; end;3 while 循環語句
循環語句while..... loop..... end loop 的功能是當while后面的條件語句成立時,重復執行循環體的程序塊
while(條件表達式)
?loop
? ? ? (程序塊)
end loop
參考:oracle 從入門到精通
下一篇 oracle游標?https://blog.csdn.net/lilongwangyamin/article/details/104391059
總結
以上是生活随笔為你收集整理的oracle PL/SQL编程基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 经典SQL语句大全 收藏
- 下一篇: 30岁面霸IT男30次面试失败经历