1.塊結構:
pl/sql程式被分割為稱為塊(block)的結構,塊中包含pl/sql程式語句。典型的pl/sql塊具有
以下的結構:
[declare
declaration_statements
]begin
executable_statements
[exception
exception_handling_statements
]end;
語法元素:
declaration_statement :
宣告了在塊的其餘部分中使用的變數。這些變數是塊的區域性變數。
executable_statment:
塊的實際可執行語句。
exeception_handling_statement:
處理可執行語句可能發生的錯誤。
注意:每條語句都要有(;)分號結尾,塊使用end關鍵字結尾。
例程:declare
width integer :=2;
height integer ;
area integer ;
begin
height :=3 ;
area :=width*height ;
dbms_output.put_line('area='||area); //表示在螢幕上顯示;
end;
/ //表示執行這個pl/sql塊;
注意:必須在sql*plus中提前輸入:set serveroutput on 才能顯示的輸出。
2.變數型別:
變數名 變數型別 ;/ : = [初始數值] ;
id integer ;
name varchar2(20) :='binming';
* proname product.price%type ; // (%type) 表示proname 的型別要和product表中的price的型別一致。
3.條件邏輯:
1.if [條件1] then
[語句段];
elseif [條件2] then..
.end if ;
2.迴圈(簡單迴圈/while/for)
單迴圈:
loop
statements
end loop;
//一直迴圈語句段,除非顯示的輸入exit / exit when 語句結束迴圈
while迴圈:
while condition loop
statements
end loop;
example:
count:=0;
while counter<6 loop
count :=count + 1 ;
end loop ;
3.for迴圈:
for loop_variable in [reverse] lower_bound..upper_bound loop
statements;
end loop;
example:
for id in 3..6 loop
dbms_output.put_line(id);
end loop;
4.游標的使用:
步驟一: 宣告變數來儲存例值 :
declare
id products.id%type;
步驟二: 宣告游標 :
游標要放在宣告部分中。
cursor product_cursor is
select
id,name,price
from
products
order by
id;//宣告了游標的型別或著說方法
步驟三:開啟游標 :
使用open語句開啟游標,必須放在塊的可執行部分中。
open product_cursor ;
步驟四: 從游標中獲取行:
使用 fetch 語句讀取游標中的行:
fetch:
product_cursor;
into
id,name,price; //把值儲存到上面宣告的三個變數中.
// 如果游標返回可能包含很多行的話,就要迴圈取出每一行資料,
可以使用product_cursor%notfound決定虛幻何時結束。
步驟五: 關閉游標:
close product_cursor;
5.過程:
使用pl/sql建立包含一組sql語句和pl/sql語句的過程。
可以使用這些過程將業務邏輯集中在資料庫中,訪問資料
庫的任何程式都可以使用這些過程。
使用create procedure 語句建立pl/sql過程:
create[or replace] procedure procedure_name //過程名字
[(parameter_name)[in|out|in out] type[, ])] //過程使用的引數
;.in 引數的預設模式。如果在過程執行時引數以有乙個值,而且這個值在過程體中不能修改,
那麼就應該指定這種模式。
.out 如果引數的值只在過程體中設定,那麼就應該指定這種模式。
.in out 如果在過程被呼叫時引數可能已經有乙個值,但是這個值可以在過程體中修改,那
麼就應該指定這種模式。
例子程式:
create procedure update_product_price(
p_product_id in products.id%type ;
p_factor in number ;
) as
product_count integer ;
begin
select
count(*)
into
product_count
from
products
where
id = p_product_id;
if product_count = 1 then
update
products
setprice = price * p_factor ;
commit ;
end if ;
end update_product_price ;
/
解除安裝Oracle 9i
1 停止所有oracle服務 2 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracle目錄 2 在hkey local machine system controlset001 services下,刪除所有oracle項 3 在hke...
oracle9i解除安裝
今天裝了oracle 9i,後來重灌遇到問題因為解除安裝未乾淨。幾經周折終於成功,現將解除安裝步驟供以後參考 1 停止服務 開啟 服務 然後停止所有oracle服務 2 刪除程式 3 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracl...
oracle9i解除安裝
今天裝了oracle 9i,後來重灌遇到問題因為解除安裝未乾淨。幾經周折終於成功,現將解除安裝步驟供以後參考 1 停止服務 開啟 服務 然後停止所有oracle服務 2 刪除程式 3 刪除登錄檔中的所有關於oracle項 1 在hkey local machine software下,刪除oracl...