天天看點

PLSQL程式設計入門

Procedure Language主要是oracle對語言能力的增加,讓if語言有了條件判斷,和for循環的處理能力,

文法 :主要分為倆部分,聲明部分,邏輯部分

declare
//這是聲明部分 

begin
//這是邏輯部分


end;  //結束,
           

下面我們就來輸出一句話, ‘hello word’

declare
str  varchar2()  :=  'hello world'     //聲明一個字元串變量,并且指派

begin
dbms_output.put_line(str);

end;
           

輸出結果如下

PLSQL程式設計入門

學習玩輸出語句後,我們做一個小練習

-- 輸出7369的工資

declare
--聲明一個變量
str emp.sal%type;    --類型的話,這樣寫類型就跟表中的sal類型一緻了

begin
select sal into str from emp where empno = ;
dbms_output.put_line(str);

end;
           

– 輸出7369的部門和姓名

declare
str emp%rowtype;    --這樣寫就相當于是一個對象類型

begin
select * into str from emp where empno = ;
dbms_output.put_line(str.empno||'     '||str.ename);

--   '||' 符号主要是用來拼接字元串的 
end;
           

輸出結果如下

PLSQL程式設計入門

if條件判斷

文法 
 if  條件 than
 elsif 條件  than
 else 
           

– 根據不同年齡輸出資訊

declare
    age number := &aaa;    --這樣寫的意思相當是 scanner,值是使用者輸入的
begin
    if age >  then
        dbms_output.put_ling('未成年人');
    elsif age >  then
        dbms_output.put_line('中年人');
    else 
         dbms_output.put_line('長輩');
    end if;
end;

           

運作結果如下

PLSQL程式設計入門

輸出結果如下, 想必大家猜到我輸入的是什麼了,永遠十八歲,

PLSQL程式設計入門

三種循環

  1. while循環
  2. for循環
  3. loop循環

while循環示範

declare
i number := ;

begin
    while i <=  loop
        dbms_output.out_line(i);
        i := i + ;
    end loop;
end;
           

運作結果如下

PLSQL程式設計入門

for循環

文法

for 變量名 in 起始值..結束值  loop

   end loop; 
           

使用for我們不用聲明變量,因為底層會幫我們聲明

declare

begin
 for i in  loop
    dbms_output.put_line(i);
 end loop;
end;
           

運作結果如下

PLSQL程式設計入門

loop循環

文法 
    loop  
        輸出語句
        --根據條件來退出循環 
        exit when 條件 
    end loop;
           

代碼示範

declare
 n number := ;
begin
  loop
    dbms_output.put_line('pipixia :'||n);
     exit when n>;
      n := n+;
   end loop;
end;
           

輸出結果 如下

PLSQL程式設計入門

遊标

相當是對結果集的封裝, 相當于是jdbc中的ResultSet

文法:

聲明 遊标

cursor 遊标名 is 查詢語句

cursor 遊标名(參數名 參數類型) is 查詢語句 where empno=參數名

demo

declare
--聲明遊标
cursor demo is select * from emp;

--聲明變量 
vrow emp%rowtype;
begin
  --打開遊标
  open demo;
  loop
    fetch demo into vrow;
    exit when demo%notfound;
    dbms_output.put_line(vrow.ename);  
  end loop;
  --關閉遊标
  close demo;
end;
           

查詢結果如下

PLSQL程式設計入門

需求

– 輸出指定部門的員工資訊

declare
--聲明遊标
cursor demo(v_deptno number ) is select * from emp where  deptno = v_deptno; 

--聲明常量
v_row emp%rowtype;

begin
  --開啟角标 
  open demo();

       --開啟循環 
       loop
         --移動角标 
         fetch demo into v_row;  

         --如果沒有查詢到,就退出循環
         exit when demo%notfound;

         --輸出列印 
         dbms_output.put_line(v_row.ename);

       end loop;  --循環末尾 
  --關閉角标
  close demo;

end;
           

輸出結果如下

PLSQL程式設計入門

遊标練習

– 按照職位漲工資,總裁漲1000 , 經理漲800 , 其他人漲400

declare
--聲明遊标 
cursor demo is select * from emp;
--聲明常量
v_row emp%rowtype;

begin
  --開啟遊标 
  open demo;
       loop
            --移動角标
           fetch demo into v_row;
           --如果沒有發現就退出循環
           exit when demo%notfound;
           --如果工作是 漲800
           if v_row.job = 'MANAGER' then
             update emp set sal = sal +  where empno = v_row.empno;

             --如果工作是boss 漲1000
            elsif v_row.job = 'PRESIDENT' then
              update emp set sal = sal +  where empno = v_row.empno;

              else 
                --漲400 
                 update emp set sal = sal +  where empno = v_row.empno;
           end if;
       end loop;

  --關閉遊标
  close demo;
  --送出事務 
  commit;
end;
           
擴充: 使用for循環周遊遊标
declare 
 --聲明遊标 
 cursor demo is select * from emp;

begin
 --周遊遊标 
 for v_row in demo loop;
    dbms_output.put_line(v_row.ename);

end loop;
           
PLSQL程式設計入門

以上就是一些簡單的知識,多敲敲就會了,,每個語言剛開始都是痛苦的,,,

繼續閱讀