PL/SQL Developer是一個集成開發環境,專門開發面向Oracle數據庫的應用。PL/SQL也是一種程序語言,叫作過程化SQL語言(Procedural Language/SQL)。PL/SQL是Oracle數據庫對SQL語句的擴展。在普通SQL語句的使用上增長了編程語言的特色,因此PL/SQL把數據操做和查詢語句組織在PL/SQL代碼的過程性單元中,經過邏輯判斷、循環等操做實現複雜的功能或者計算。MySQL 也支持 PL/SQL 的,但支持Navicat Premium。java
1、組成:sql
一、定義部分:數據庫
定義一些常量、變量等;編程
二、執行部分:(必須存在)oracle
包含要執行的sql語句;編程語言
三、異常處理部分:oop
捕獲異常(可能出現的運行錯誤,並編寫出錯後的代碼)。spa
declare --變量聲明部分 begin --執行部分 exception --異常處理部分 End
2、調試:調試
使用set serveroutput on 命令設置環境變量;
serveroutput爲打開狀態,從而使得pl/sql程序可以在SQL*plus中輸出結果。
在編寫存儲過程時,有時會用
dbms_output.put_line將必要的信息輸出,以便對存儲過程進行調試,只有將serveroutput變量設爲on後,信息才能顯示在屏幕上。code
3、變量的定義:(相似java裏面的匿名方法)
一、格式:
變量名 變量類型(oracle裏面數據類型) [約束] default 默認值
變量名 變量類型 [約束] [:=初始值]
二、
SQL> declare 2 i number default 10; 3 begin 4 i:=i+10; 5 dbms_output.put_line(i); 6 end; 7 / 20 PL/SQL procedure successfully completed
4、流程控制語句:
一、if語句:
if 條件 then ... end if; if 條件 then ... else ... end if; if 條件 then ... elsif 條件 then ... end if;
SQL> declare 2 age number default 90; 3 height number := 175; 4 gender char(4) := '男'; 5 begin 6 if gender='男' then 7 dbms_output.put_line('你能夠和女性結婚'); 8 end if; 9 10 if height>170 then 11 dbms_output.put_line('能夠打籃球'); 12 else 13 dbms_output.put_line('能夠踢足球'); 14 end if; 15 16 if age<20 then 17 dbms_output.put_line('年輕小夥'); 18 elsif age <= 50 then 19 dbms_output.put_line('年輕有爲'); 20 elsif age <=70 then 21 dbms_output.put_line('安享天倫'); 22 else 23 dbms_output.put_line('佩服佩服'); 24 end if; 25 26 end; 27 / 你能夠和女性結婚 能夠打籃球 佩服佩服 PL/SQL procedure successfully completed
二、while循環:
while 條件 loop 循環體 end loop
三、for循環:
for 循環變量 in [reverse] 起始值..終止值 loop 循環體 end loop
reverse 是倒序;注意起始值與終止值中間有兩點
四、loop循環語句:
loop --循環體 exit when 條件; end loop;
SQL> declare 2 i number :=0; 3 total number :=0; 4 begin 5 loop 6 i := i+1; 7 total := total + i; 8 9 exit when i>=100; 10 end loop; 11 12 dbms_output.put_line('總和'||total); 13 14 end; 15 / 總和5050 PL/SQL procedure successfully completed
4、存儲過程建立語句:
存儲過程就是有名字的plsql塊!
procedure就是存儲過程!
create or replace procedure 名稱[(參數)]--此名稱相似java裏的方法名 authid current_user|definer --以定義者仍是調用者的身份運行 is[不要加declare] --變量聲明部分 begin --主體部分,封裝起來,而後調用的時候纔開始執行,相似於調用方法!!! exception --異常部分 end;
SQL> create procedure a2(width int,height int) 2 is 3 area int:=0; 4 begin 5 area:=width*height; 6 dbms_output.put_line('area is'||area); 7 end; 8 / Procedure created
--調用存儲過程--有參的! call a2(1,2);