PL/sql中如何聲明變量,常量,控制語句及for,loop,while和順序控制的使用


pl/sql

什么是PL/SQL

  PL/SQL是結合oracle過程語言和機構化查詢運行(SQL) 的一種擴展語言。使用PL/SQL可以編寫具有很多高級功能的程序,有以下優點

  •  PL/SOL可以采用過程性語言控制程序的結構,也就是說,結構,如判斷。循環等程序結構。
  •  同其他的編程語言一樣,PL/SOL可以對程序中的錯誤進行自動處理,誤時不會中斷,即它的異常處理機制。
  •  PL/SOL程序塊具有更好的可移植性,可以移植到另一個Cracle數據庫中。
  •  PL/SOL程序減少了網絡的交互,有助於提高程序性能。

常量和變量的聲明與賦值

聲明並賦值:

declare
/*
||注意命名規則
||名稱不能超過30個字符
||第一個字符必須為字母
||不區分大小寫
||不能用 減號
||不能是SQL保留字 
*/
--聲明變量
  ename varchar2(20)
--聲明常量 賦值是用 := 賦值 '='用於比較
  c_rate_incr constant number(7,2):=1.10
begin
end;

賦值:

--聲明變量
  v_ename varchar2(20);
--聲明常量並使用 :=賦值
  c_rate_incr constant number(7,2):=1.10;
begin
  --通過select in同給變量賦值
  select ename into v_ename from emp
  where empno='7788';
  Dbms_Output.put_line('變量:'||v_ename);
end;

結果

 

這種操作只能返回單行數據多了會報錯

屬性類型

使用%TYPE屬性的優點在於:

  • 可以不必知道所引用的數據庫列的數據類型。
  • 所引用的數據庫列的數據類型可以實時改變, 容易保持一一致,不用修改PL/S0L 程序。

%ROWTYPE返回一個記錄類型,其數據類型和數據庫表的數據結構相一致,這時可以使用%FOWTIFE,使用%ROWTYPE屬性的優點在於:

  • 可以不必知道所引用的數據庫中列的個數和數據類型。
  • 所引用的數據庫中列的個數和數據類型可以實時改變,容易保持一致不用修改PL/S0L 程序。

簡單來講 %type相當於一個普通的變量類型(字符或者數值),而%rowtype則是相當於集合可以保存多個變量信息

%type舉例:

declare
--聲明變量
  v_ename emp.ename%type;--聲明常量並使用 :=賦值
  c_rate_incr constant number(7,2):=1.10;
begin
  --通過select in同給變量賦值
  select ename into v_ename from emp
  where empno='7788';
  Dbms_Output.put_line('變量:'||v_ename);
end;

結果

%rowtype舉例:

declare
--聲明變量
  v_ename emp%rowtype;
--聲明常量並使用 :=賦值
  c_rate_incr constant number(7,2):=1.10;
begin
  --通過select in同給變量賦值
  select * into v_ename from emp
  where empno='7788';
  Dbms_Output.put_line('變量:'||v_ename.job||'--sal:'||v_ename.sal);
end;

結果

 

pl/sql中的控制語句

if控制語句

begin
  if 9>0 then
    Dbms_Output.put_line('9>0');
  else if 0>1 then
    Dbms_Output.put_line('0>1 ');     
  else
    Dbms_Output.put_line('9<0');
  end if;
end;

結果:

case語句

--case 也就是switch一樣的功能
begin
  case 2
     when 1 then
        Dbms_Output.put_line('2是1');
     when 3 then
        Dbms_Output.put_line('2是3');
     else
        Dbms_Output.put_line('2是2');
     end case;
end;

結果:

loop循環

--loop
begin
  loop
    Dbms_Output.put_line('loop也就是do-while');
    exit when 9>0;
  end loop;
end;

結果:

 

for循環

--for
begin
 for i in 1..6 loop
   Dbms_Output.put_line('i:'||i);
 end loop;    
end;

結果:

while循環

--while
begin
  while 6>0 loop   
     Dbms_Output.put_line('6>0');
    exit;
   end loop;
end;
  • exit:跳出當前循環,使循環結束(相當與其他編程語言里面的break)
  • continue:結束本次循環,進入下一次循環
  • return:結束當前過程或者函數

順序控制

  順序控制用於按順序執行語句.順序語句包括null語句和goto語句goto不推薦使用

--順序控制
begin
   if 6>0 then
     null;--為了使語法變得有意義,去掉null會報錯
   else
      Dbms_Output.put_line('6>0');
   end if;
end;

  null語句是一個可執行語句,相當於一個占位符或不執行任何操作的空語句,它可以使得某些語句變得有意義,提高程序可讀性,保證其他語句結構

的完整性和正確性.

begin
   if 6>0 then
     goto end_loop;--跳轉到  <<end_loop>> 此標記是自定義 
   else
     null;
   end if;
   <<end_loop>>
   Dbms_Output.put_line('6>0');
end;
  • 標簽<<end_loop>>后面接一條可執行的語句,不能直接跟END IF或者其他END;
  •  屬於plsql控制語句,用於程序控制非條件跳至指定標簽<<???>>。不易控制和維護,慎用!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM