mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块
本文主要向大家介紹了Oracle數(shù)據(jù)庫(kù)之Oracle_PL/SQL(1) 匿名塊,通過具體的內(nèi)容向大家展現(xiàn),希望對(duì)大家學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)有所幫助。
1. PL/SQL 簡(jiǎn)介
PL/SQL是一種比較復(fù)雜的程序設(shè)計(jì)語(yǔ)言, 用于從各種環(huán)境中訪問Oracle數(shù)據(jù)庫(kù)。
為什么使用PL/SQL?
Orade是一種關(guān)系型數(shù)據(jù)庫(kù), 用來訪問關(guān)系型數(shù)據(jù)庫(kù)的語(yǔ)言是 “結(jié)構(gòu)化査詢語(yǔ)言”SQL。
SQL是一種第四代語(yǔ)言,只描述做什么,不描述如何做。
一代語(yǔ)言:01
二代語(yǔ)言:匯編
三代語(yǔ)言:過程(條件判斷、循環(huán))
四代語(yǔ)言:sql ?DELETE FROM emp where major='MANAGER';
第四代語(yǔ)言相對(duì)簡(jiǎn)單,提供了較少的命令,它將用戶與底層的基本數(shù)據(jù)結(jié)構(gòu)和算法隔離開來。
但缺少第三代語(yǔ)言對(duì)過程(條件判斷、循環(huán))的處理。
PL/SQL(Procedural Language/SQL)過程性SQL語(yǔ)言,通過增加了過程性控制結(jié)構(gòu)有效的
擴(kuò)充了SQL的功能。
2. PL/SQL基礎(chǔ)
2.1 PL/SQL塊
PL/SQL中的基本単位是“塊” (block)。
所有的 PL/SQL程序都是由塊構(gòu)成的,
這些塊可以順序出現(xiàn),也可以相互進(jìn)行嵌套。
分類:
匿名塊:沒有名字,只能被執(zhí)行一次。
函數(shù):
存儲(chǔ)過程:
包:
觸發(fā)器:
匿名塊語(yǔ)法:
declare
聲明部分;
begin
執(zhí)行部分;
exception
異常處理部分;
end;
第一個(gè)例子:
begin
null;
--dbms_output.put_line('hello');
end;
2.2 詞法單位
詞法單位是一個(gè)字符序列,包括:
大寫和小寫的字母,A~Z和a~z
數(shù)字,0~9
非顯示的空字符,空格、回車、Tab鍵
數(shù)學(xué)符號(hào),+ - * / > < =
間隔符號(hào),() [] ? % # ! ;
這些符號(hào)可以在PLSQL中使用,
PLSQL中不區(qū)分大小寫(引號(hào)內(nèi)的字符串除外)。
2.2.1 標(biāo)識(shí)符
標(biāo)識(shí)符是用來給PLSQL對(duì)象(變量、游標(biāo)、類型、函數(shù)、存儲(chǔ)過程、包、觸發(fā)器等)命名的。
必須以字母開頭,包括字母、數(shù)字、_、#、$,其余字符則是非法的。
標(biāo)識(shí)符最長(zhǎng)30個(gè)字符。
變量命名: v_***
參數(shù)命名: p_***
函數(shù)命名: func_***
過程命名: proc_***
包命名: ? pkg_***
觸發(fā)器命名: tri_***
保留字:被oracle已使用的標(biāo)識(shí)符稱為保留字,不能使用保留字作為標(biāo)識(shí)符。
標(biāo)引標(biāo)識(shí)符:雙引號(hào)內(nèi)的標(biāo)識(shí)符稱為標(biāo)引標(biāo)識(shí)符,標(biāo)引標(biāo)識(shí)符是區(qū)分大小寫的。
2.2.2 分界符
算數(shù)運(yùn)算符:+ - * /
邏輯運(yùn)算符:= > < >= <= != <>
注釋符:-- ? /* ?*/
字符串連接符:||
賦值符: :=
2.2.3 文字
文字是一個(gè)不能成為標(biāo)識(shí)符的字符、數(shù)字、布爾值。
例如:'ABC',23,true,false,null
2.2.4 注釋
注釋增強(qiáng)了程序的可讀性、使程序更容易被理解。
注釋在編譯時(shí)會(huì)被編譯器忽略。
單行注釋:--
多行注釋:/* ?*/
2.3 變量聲明
變量是一些內(nèi)存單元,可以在變量中存儲(chǔ)數(shù)據(jù)。
變量在塊的聲明部分被定義。
每個(gè)變量都有一個(gè)特定的類型及長(zhǎng)度。
2.3.1 聲明語(yǔ)法
變量名 ?類型(長(zhǎng)度) [not null] [:=默認(rèn)值];
舉例:
declare
v_number number:=45;
begin
dbms_output.put_line(v_number);
end;
字符串長(zhǎng)度限制在范圍 (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 變量初始化
如果定義變量時(shí)沒有給初始化值,默認(rèn)被賦值為null。
declare
v_char ? varchar2(20);
begin
dbms_output.put_line(v_char);
end;
如果聲明時(shí)指定了not null,那么變量就必須被初始化。
declare
v_char ? varchar2(20) not null;
begin
dbms_output.put_line(v_char);
end;
如果聲明時(shí)指定了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來替換賦值符號(hào):=
declare
v_char ? varchar2(20) default 'abcd';
begin
v_char:='abcde';
dbms_output.put_line(v_char);
end;
在聲明中,每一行只能聲明一個(gè)變量。
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
變量可以用來存儲(chǔ)表中的數(shù)據(jù),
變量應(yīng)該和表中的列具有相同的數(shù)據(jù)類型。
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變量作用域和可見性
變量的作用域是可以訪問該變量的程序部分。
對(duì)于PLSQL變量,作用域就是從變量聲明開始直到該塊的結(jié)束。
變量超出作用域后,系統(tǒng)自動(dòng)回收變量的內(nèi)存空間。
2.5表達(dá)式和運(yùn)算符
2.5.1賦值
變量:=表達(dá)式;
出現(xiàn)在:=左邊的稱為左值,出現(xiàn)在:=右邊的稱為右值。
左值必須是指向?qū)嶋H的存儲(chǔ)單元,即右值被寫入的內(nèi)存位置。
所有的左值都是變量。
declare
v_number number;
begin
v_number:=5*2;
dbms_output.put_line(v_number);
end;
每行語(yǔ)句只能對(duì)一個(gè)變量賦值。
declare
v_number number;
v_number2 number;
begin
v_number:=v_number2:=5*2;
dbms_output.put_line(v_number);
end;
2.5.2 表達(dá)式
PLSQL表達(dá)式是右值。
表達(dá)式單獨(dú)作為一個(gè)語(yǔ)句使用是無效的。
表達(dá)式只能是語(yǔ)句的一部分。
declare
v_number number;
begin
5*2;
dbms_output.put_line(v_number);
end;
本文由職坐標(biāo)整理并發(fā)布,希望對(duì)同學(xué)們學(xué)習(xí)Oracle有所幫助,更多內(nèi)容請(qǐng)關(guān)注職坐標(biāo)數(shù)據(jù)庫(kù)Oracle數(shù)據(jù)庫(kù)頻道!
總結(jié)
以上是生活随笔為你收集整理的mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CCNA,CCNP资料
- 下一篇: mysql 字段 as_mysql 字段