mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块
本文主要向大家介紹了Oracle數據庫之Oracle_PL/SQL(1) 匿名塊,通過具體的內容向大家展現,希望對大家學習Oracle數據庫有所幫助。
1. PL/SQL 簡介
PL/SQL是一種比較復雜的程序設計語言, 用于從各種環境中訪問Oracle數據庫。
為什么使用PL/SQL?
Orade是一種關系型數據庫, 用來訪問關系型數據庫的語言是 “結構化査詢語言”SQL。
SQL是一種第四代語言,只描述做什么,不描述如何做。
一代語言:01
二代語言:匯編
三代語言:過程(條件判斷、循環)
四代語言:sql ?DELETE FROM emp where major='MANAGER';
第四代語言相對簡單,提供了較少的命令,它將用戶與底層的基本數據結構和算法隔離開來。
但缺少第三代語言對過程(條件判斷、循環)的處理。
PL/SQL(Procedural Language/SQL)過程性SQL語言,通過增加了過程性控制結構有效的
擴充了SQL的功能。
2. PL/SQL基礎
2.1 PL/SQL塊
PL/SQL中的基本単位是“塊” (block)。
所有的 PL/SQL程序都是由塊構成的,
這些塊可以順序出現,也可以相互進行嵌套。
分類:
匿名塊:沒有名字,只能被執行一次。
函數:
存儲過程:
包:
觸發器:
匿名塊語法:
declare
聲明部分;
begin
執行部分;
exception
異常處理部分;
end;
第一個例子:
begin
null;
--dbms_output.put_line('hello');
end;
2.2 詞法單位
詞法單位是一個字符序列,包括:
大寫和小寫的字母,A~Z和a~z
數字,0~9
非顯示的空字符,空格、回車、Tab鍵
數學符號,+ - * / > < =
間隔符號,() [] ? % # ! ;
這些符號可以在PLSQL中使用,
PLSQL中不區分大小寫(引號內的字符串除外)。
2.2.1 標識符
標識符是用來給PLSQL對象(變量、游標、類型、函數、存儲過程、包、觸發器等)命名的。
必須以字母開頭,包括字母、數字、_、#、$,其余字符則是非法的。
標識符最長30個字符。
變量命名: v_***
參數命名: p_***
函數命名: func_***
過程命名: proc_***
包命名: ? pkg_***
觸發器命名: tri_***
保留字:被oracle已使用的標識符稱為保留字,不能使用保留字作為標識符。
標引標識符:雙引號內的標識符稱為標引標識符,標引標識符是區分大小寫的。
2.2.2 分界符
算數運算符:+ - * /
邏輯運算符:= > < >= <= != <>
注釋符:-- ? /* ?*/
字符串連接符:||
賦值符: :=
2.2.3 文字
文字是一個不能成為標識符的字符、數字、布爾值。
例如:'ABC',23,true,false,null
2.2.4 注釋
注釋增強了程序的可讀性、使程序更容易被理解。
注釋在編譯時會被編譯器忽略。
單行注釋:--
多行注釋:/* ?*/
2.3 變量聲明
變量是一些內存單元,可以在變量中存儲數據。
變量在塊的聲明部分被定義。
每個變量都有一個特定的類型及長度。
2.3.1 聲明語法
變量名 ?類型(長度) [not null] [:=默認值];
舉例:
declare
v_number number:=45;
begin
dbms_output.put_line(v_number);
end;
字符串長度限制在范圍 (1...32767)
declare
v_char ? varchar2(20);
begin
v_char:='abcde';
dbms_output.put_line(v_char);
end;
declare
v_date ? date;
begin
v_date:=sysdate;
dbms_output.put_line(v_date);
end;
The VARCHAR datatype is currently synonymous with the VARCHAR2 datatype.
Oracle recommends that you use VARCHAR2 rather than VARCHAR.
In the future, VARCHAR might be defined as a separate datatype used
for variable-length character strings compared with different comparison semantics.
2.3.2 變量初始化
如果定義變量時沒有給初始化值,默認被賦值為null。
declare
v_char ? varchar2(20);
begin
dbms_output.put_line(v_char);
end;
如果聲明時指定了not null,那么變量就必須被初始化。
declare
v_char ? varchar2(20) not null;
begin
dbms_output.put_line(v_char);
end;
如果聲明時指定了constant,那么變量就必須被初始化,且不能被修改。
declare
v_char constant varchar2(20):='PLSQL';
begin
dbms_output.put_line(v_char);
end;
declare
v_char constant varchar2(20):='PLSQL';
begin
v_char:='abcde';
dbms_output.put_line(v_char);
end;
在聲明中可以用default來替換賦值符號:=
declare
v_char ? varchar2(20) default 'abcd';
begin
v_char:='abcde';
dbms_output.put_line(v_char);
end;
在聲明中,每一行只能聲明一個變量。
declare
v_char,v_char2 ? varchar2(20);
begin
v_char:='abcde';
dbms_output.put_line(v_char);
end;
declare
v_char ? varchar2(20);
v_char2 ?varchar2(20);
begin
v_char:='abcde';
dbms_output.put_line(v_char);
end;
2.4 PL/SQL類型
2.4.1 使用%TYPE
變量可以用來存儲表中的數據,
變量應該和表中的列具有相同的數據類型。
declare
v_ename ? varchar2(4);
begin
select ename into v_ename from emp where empno=7788;
dbms_output.put_line(v_ename);
end;
declare
v_ename ? emp.ename%type;
begin
select ename into v_ename from emp where empno=7788;
dbms_output.put_line(v_ename);
end;
2.4.2 使用%ROWTYPE
declare
v_emp ? emp%rowtype;
begin
select * into v_emp from emp where empno=7788;
dbms_output.put_line(v_emp.ename);
end;
2.4.3變量作用域和可見性
變量的作用域是可以訪問該變量的程序部分。
對于PLSQL變量,作用域就是從變量聲明開始直到該塊的結束。
變量超出作用域后,系統自動回收變量的內存空間。
2.5表達式和運算符
2.5.1賦值
變量:=表達式;
出現在:=左邊的稱為左值,出現在:=右邊的稱為右值。
左值必須是指向實際的存儲單元,即右值被寫入的內存位置。
所有的左值都是變量。
declare
v_number number;
begin
v_number:=5*2;
dbms_output.put_line(v_number);
end;
每行語句只能對一個變量賦值。
declare
v_number number;
v_number2 number;
begin
v_number:=v_number2:=5*2;
dbms_output.put_line(v_number);
end;
2.5.2 表達式
PLSQL表達式是右值。
表達式單獨作為一個語句使用是無效的。
表達式只能是語句的一部分。
declare
v_number number;
begin
5*2;
dbms_output.put_line(v_number);
end;
本文由職坐標整理并發布,希望對同學們學習Oracle有所幫助,更多內容請關注職坐標數據庫Oracle數據庫頻道!
總結
以上是生活随笔為你收集整理的mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CCNA,CCNP资料
- 下一篇: OOP的核心思想是什么?