plsql(轻量版)_基本语法
生活随笔
收集整理的這篇文章主要介紹了
plsql(轻量版)_基本语法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ORACLE的組件也可以用PL/SQL去寫,后邊有存儲過程,存儲函數,觸發器,可以自己來寫存儲過程,或者叫觸發器,那前面有哪些我們就走一走,這里實際上是一本小書了,59頁,比較經典版的plsql,我們不能像講JAVA一樣,光講JAVA基礎就講了幾個月的時間了,PL/SQL講一天,講一天就講完了,從前往后我們走一走,PL/SQL是一門高級程序設計語言,然后在各種環境下對ORACLE數據庫進行訪問,然后他繼承與數據庫服務器中,他的代碼也可以對數據進行快速高效的處理,了解一下就行
他的全稱是叫Procedure Language,或者Structured Query Language,就是結構化查詢語言,也就是過程語言,它是對SQL語言存儲過程語言的擴展,他里面可以定義函數,SQL當時我們講流程控制的時候,case when then,講了一個decode,PL/SQL作為一個編程語言了,他就比較全了,就跟JAVA一樣,可以有條件判斷,也可以有循環,他這里面就有循環了,當然其實它作為一個語言,就像JAVA里面可以定義方法,他這里邊也可以定義,不過叫函數了,可以定義函數,這個函數就叫存儲函數,還可以定義存儲過程,一個有返回值,一個沒有返回值,還可以定義觸發器,你定義好以后,就像你一個類一樣,JAVA里面我們創建一個類,類就存在了,你想調的時候過來調,它是一個面向過程的語言
我們就直接往后過,PL/SQL是ORACLE系統的核心語言,現在他又很多組件也是由PL/SQL來寫的,PL/SQL可以使用SQL里面的關鍵字,增刪改查,然后后面就是DCL的,像回滾,設置保存點,增刪改查的也要注意,這個select跟SQL里面的不一樣,這個叫select什么什么into,到一個變量里,或者到記錄類型里,等等,存儲到游標的一個對象里,存儲到一個游標里,into,多了一個他
介紹就說完了,PL/SQL塊結構和組成元素,還有那幾部分構成,由三個塊構成,叫聲明部門,執行部門,異常處理部分
三塊對應的有4個關鍵字,四個關鍵字 把它隔離成三塊,DECLARE,叫聲明部分,你在整個執行過程當中,需要用到哪些變量,除了變量之外,還有比如有記錄類型,游標,這個東西你給他定義在DELARE里面,就有點類似于JAVA里面的成員變量一樣,成員變量不就是直接類完了以后就開始寫這個變量,這個你就相當于把這個變量寫在這,begin就是你真正開始執行的這個部分,可能要用到你要用到上面聲明的這些變量,有點類似于JAVA里面的類方法,類方法有一個入口可以執行,這里是從begin開始執行,然后JAVA程序里面也有異常,他這里也有異常,這個異常如何處理,他單純加了一塊exception,如果你在begin執行的時候,出現異常了,根據你這個異常,也有一個對象,跟你這個對象的類型,然后到我這里去匹配,他用的是when來匹配,when當是這個異常對象的時候,when怎么去處理,when什么對象,怎么怎么處理,我們JAVA里面用的是try catch,try這段代碼,當你有異常的catch的時候,你那個對象是哪個類型的放過來,然后在catch那個大括號里面處理,形式不太一樣,但是方式是類似的,end表明你這個塊結束了,那我們寫一個最簡單的PL/SQL的一個程序,最簡單的是helloworld
在這個PL/SQL中,你要使用的話,你首先要進行這樣一個操作,這個是必須的,叫set serveroutput on,沒有分號回車
每次你不寫這個命令的時候,你就運行完了就沒有數據結果,我們就寫一個最簡單的PL/SQL的程序,helloworld它會有三部分,declare,begin,還有exception,end,end在這要加上分號,最簡單的一個helloworld,這里面涉及到聲明的變量,或者叫類型,或者叫游標,begin是你程序真正執行的部分,類似于JAVA里的main方法,exception根據begin出現的異常進行處理,提供處理的機制,最后表示結束,這個處理機制他使用的是when,然后then怎么處理,你可以再加上一個再when,然后這樣處理,我們講的異常后面會說,你想寫最簡單的一個helloworld的話,是不是不用定義變量,沒有什么變量,就直接begin了,begin就直接一條語句輸出,這不是相當于main方法嗎,寫輸出語句,JAVA里面用的是system.out.println,那這里面誰相當于剛才說的那句話,這個dbms_output.put_line,一個小括號,下劃線結束,打印的是helloworld的一個字符串,然后沒有異常,沒有異常就不寫了,就這樣,這就是最簡單的,他這個把它注掉,helloworld是吧declarebegindbms_output.put_line('helloworld');exceptionend;
因為你這里寫了exception但是沒有處理,那就是說沒有用的,這個表沒有異常,把它就可以注了,這個沒有聲明,他也可以不要了,那我這個程序實際上就三行,這三行是最簡潔的方式了,再少也少不了了,begin是你程序的入口,這個是必須要有的,end表示你程序結束,那最簡單的不就是一條語句,最簡潔的一個條件,格式就這樣,這是最簡潔的一個程序,helloworldbegindbms_output.put_line('helloworld');end;
那我們寫一個比他復雜一點的,復雜一點的,復雜到什么程度,查詢一下100號員工的工資,它是100號員工工資的話,我們用SQL語言的話,select salary from employees where employee_id = 100select salary from employees where employee_id = 100;
用PL/SQL的話怎么寫,就這樣寫,declare,先把這個結構寫出來,沒有異常,end結束,我聲明一個變量,我先寫一遍再注釋,這個變量我們后面會講到,往后拉的話,變量如何聲明,如果是變量的話V開頭,常用用C,如果異常開頭就用E,記錄類型后面加一個下劃線record,就像我們寫一個主鍵一樣,主鍵或者外鍵
增強他的可讀性,這兒我定義的是一個變量,所以我就v,是一個工資相關的,然后變量的數據類型,varchar2,20來存,分號結束,就是這個變量我聲明了,聲明了以后,begin來操作,本質上操作還是用的select語句,只不過是select into,我select salary,into v_sal,from哪個表,employees表,where department_id等于100,這個時候加一個分號,這個呢我select放到這里邊,我想給打印出來,dbms_output.put_line(v_sal)給打印出來,打印完以后就end,還是2萬4declarev_sal varchar2(20)beginselect salary into v_sal from employees where employee_id = 100;dbms_output.put_line(v_sal);end;
這里說一下,declare你就把他理解成聲明,類似于JAVA里面的成員變量位置,我可以在這聲明變量,然后這是SQL的一個操作,SQL語句的操作,這里面實現select的操作,select什么什么into什么什么,然后有表的話就from什么什么表,如果有條件的話加上一個where,放到這個變量里,然后呢,打印,最后結束,這是最標準的一個程序
那現在我們說了,不光是想輸出100號員工的工資,我還想輸出他的email,甚至hire_date,phone_number,都想輸出,那你這個變量就多定義幾個,還有一個叫email,這個需要注意的是,我這寫的不太好,salary是一個number類型的,我給他放在一個varchar里面,最好你的數據類型是他的一致的,20個,兩個小數,email你是把這個表的email放到這里,email是個varchar的,這個是varchar2,20個,而且你這個數,不能夠比你這個email小,小的時候就放不進去了,可以再聲明一個,v_hire_date,date類型的,分號,每一個都是分號結束的,select在這里寫明,按照這個順序填進去,salary,email,hire_date,into v_sal,v_email,v_hire_date,從這個表當中,where到這,然后打印的時候打印,打印他的工資,也打印一下他的email,再打印一下他的hire_date,看一下結果,就是這樣declarev_sal number(10,2);v_email varchar2(20);v_hire_date date;beginselect salary,email,hire_date into v_sal,v_email,v_hire_date from employees where employee_id = 100;dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);end;
相較于剛才這個,這里定義了三個變量,這里需要對應,類型也對應,然后這個儲值范圍要注意,比如v_email,你要給2的話,說字符串緩沖區太小了declarev_sal number(10,2);v_email varchar2(2);v_hire_date date;beginselect salary,email,hire_date into v_sal,v_email,v_hire_date from employeeswhere employee_id = 100;dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);end;
所以你這里聲明的類型大小是不能夠小于人家本身這個的,email你是要存的這里面的email,這里面的數據類型的一個大小,你這個不能比他小,就是這個,這個完了以后,我們剛才說了,這個數據類型,先說這個吧,數據類型,然后你這樣來看,你這個不能比他小,而且數據類型也要一樣,我剛才不是聲明成他了,我給他改了,你不是要放employees這個表嗎,而且是要把里面的salary放到這里,那你這個salary的數據類型,我就放到這兒,使用這樣一個形式,這個表明就是v_sal,這個變量的數據類型,跟employees表下的salary數據類型,是一樣的,這個相當于動態的來獲取一下salary的數據類型,當這個數據類型如果變化的時候,我這兒也跟著改變,那同樣的下邊這幾個,可以給他處理掉,點email,問號type,然后這兒,這個date其實可以不寫了,動態的獲取一下,這個表對應三個變量的類型,然后這不變,然后打印,照樣就出來了declarev_sal employees.salary%type;v_email employees.email%type;v_hire_date employees.hire_date;beginselect salary,email,hire_date into v_sal,v_email,v_hire_date from employeeswhere employee_id = 100;dbms_output.put_line(v_sal||','||v_email||','||v_hire_date);end;
?
總結
以上是生活随笔為你收集整理的plsql(轻量版)_基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高级子查询练习
- 下一篇: plsql(轻量版)_记录类型1