日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块

發(fā)布時(shí)間:2023/12/9 数据库 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql中编写匿名块_Oracle数据库之Oracle_PL/SQL(1) 匿名块 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文主要向大家介紹了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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。