新聞中心
從PL/SQL的字面上來(lái)看,它和SQL有一定的關(guān)系,那么就從SQL開(kāi)始講一下它們倆兄弟之間的關(guān)系。

濱海網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,濱海網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為濱海上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的濱海做網(wǎng)站的公司定做!
什么是SQL?
結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language,簡(jiǎn)稱SQL)是用來(lái)訪問(wèn)關(guān)系型數(shù)據(jù)庫(kù)一種通用語(yǔ)言,屬于第四代語(yǔ)言(4GL),其執(zhí)行特點(diǎn)是非過(guò)程化,即不用指明執(zhí)行的具體方法和途徑,而是簡(jiǎn)單地調(diào)用相應(yīng)語(yǔ)句來(lái)直接取得結(jié)果即可。顯然,這種不關(guān)注任何實(shí)現(xiàn)細(xì)節(jié)的語(yǔ)言對(duì)于開(kāi)發(fā)者來(lái)說(shuō)有著極大的便利。
那什么又是PL/SQL呢?
對(duì)于有些復(fù)雜的業(yè)務(wù)流程要求相應(yīng)的程序來(lái)描述,這種情況下SQL就有些無(wú)能為力了。PL/SQL的出現(xiàn)正是為了解決這一問(wèn)題,PL/SQL是一種過(guò)程化語(yǔ)言,屬于第三代語(yǔ)言,它與C、 C++、Java等語(yǔ)言一樣關(guān)注于處理細(xì)節(jié),可以用來(lái)實(shí)現(xiàn)比較復(fù)雜的業(yè)務(wù)邏輯。
PL/SQL(Procedural Language/SQL)是數(shù)據(jù)庫(kù)廠商在標(biāo)準(zhǔn)的SQL語(yǔ)言上的擴(kuò)展。PL/SQL不僅允許嵌入SQL語(yǔ)言,還可以定義變量和常量,允許使用條件語(yǔ)句和循環(huán)語(yǔ)句,允許使用例外處理各種錯(cuò)誤,這使得它的功能變得更加強(qiáng)大。
我們需要知道的
我們需要了解以下幾個(gè)關(guān)鍵點(diǎn):
- 存儲(chǔ)過(guò)程,函數(shù),觸發(fā)器是PL/SQL編寫(xiě)的
- 存儲(chǔ)過(guò)程,函數(shù),觸發(fā)器是存儲(chǔ)在數(shù)據(jù)庫(kù)中的
- PL/SQL是非常強(qiáng)大的數(shù)據(jù)庫(kù)過(guò)程語(yǔ)言
- 存儲(chǔ)過(guò)程,函數(shù)可以在C、 C++、Java、C#等程序中調(diào)用
PL/SQL開(kāi)發(fā)工具有哪些?
首先,數(shù)據(jù)庫(kù)廠商都會(huì)自帶命令行開(kāi)發(fā)工具,比如Oracle的SQL*PLUS、MySQL的MySQL Client、DB2的DB2CMD等等。
其次,會(huì)有一些集成開(kāi)發(fā)環(huán)境(IDE),比較老牌的有PL/SQL Developer(這個(gè)只適用Oracle數(shù)據(jù)庫(kù))、DbVisualizer、Navicat、SQLyog、Toad等等,這些IDE都是獨(dú)立的第三方產(chǎn)品。其實(shí),各數(shù)據(jù)庫(kù)廠商也有自己的IDE,不過(guò)感覺(jué)沒(méi)有特別好用的,基本上被第三方軟件壟斷,畢竟IDE不是數(shù)據(jù)庫(kù)公司的強(qiáng)項(xiàng)嘛。
我們上面說(shuō)的命令行工具以及集成開(kāi)發(fā)環(huán)境都可以用來(lái)編寫(xiě)SQL或者PL/SQL程序,都屬于PL/SQL的開(kāi)發(fā)工具。
PL/SQL的程序結(jié)構(gòu)
我們來(lái)大概瀏覽一下PL/SQL的程序結(jié)構(gòu),各數(shù)據(jù)庫(kù)廠商的實(shí)現(xiàn),會(huì)有所不同,下面以O(shè)racle為例進(jìn)行說(shuō)明。
PL/SQL程序都是以塊(block)為基本單位,整個(gè)PL/SQL塊分三部分:聲明部分(用declare開(kāi)頭)、執(zhí)行部分(以 begin開(kāi)頭)和異常處理部分(以exception開(kāi)頭)。其中執(zhí)行部分是必須的,其他兩個(gè)部分可選。無(wú)論P(yáng)L/SQL程序段的代碼量有多大,其基本結(jié)構(gòu)就是由這三部分組成。
程序結(jié)構(gòu)模板
- declare
- /* 聲明區(qū)(可選):定義類型和變量、聲明變量、聲明函數(shù)、游標(biāo) */
- begin
- /* 執(zhí)行區(qū)(必須的):執(zhí)行pl/sql語(yǔ)句或者sql語(yǔ)句 */
- exception
- /* 異常處理區(qū)(可選):處理錯(cuò)誤的 */
- end;
一個(gè)demo
- /*聲明部分,以declare開(kāi)頭*/
- declare v_id integer;
- v_name varchar(20);
- cursor c_emp is select * from employee where emp_id=3;
- /*執(zhí)行部分,以begin開(kāi)頭*/
- begin open c_emp; //打開(kāi)游標(biāo)
- loop
- //從游標(biāo)取數(shù)據(jù)
- fetch c_emp into v_id,v_name;
- exit when c_emp%notfound ;
- end loop ;
- //關(guān)閉游標(biāo)
- close c_emp;
- dbms_output.put_line(v_name);
- /*異常處理部分,以exception開(kāi)始*/
- exception
- when no_data_found then
- dbms_output.put_line('沒(méi)有數(shù)據(jù)');
- end ;
【本文為專欄作者“朱國(guó)立”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)“開(kāi)發(fā)者圓桌”獲取聯(lián)系和授權(quán)】
分享名稱:PL/SQL是啥?
URL鏈接:http://m.fisionsoft.com.cn/article/cooicis.html


咨詢
建站咨詢
