plsql 基礎教程(一)


 

L/SQL

一、PLSQL 變量

set serveroutput on;

declare v_num number :=0;--變量名一般以v開頭

begin

    v_num:=2/v_num; --這句因為除數為0會報錯。

    dbms_output.put_line(v_num);  

end;

/

 

異常處理:

set serveroutput on;

declare v_num number :=0;

begin

    v_num:=2/v_num;

    dbms_output.put_line(v_num);

    exception

    when others then

    dbms_output.put_line('錯誤');

end;

/

 

 變量類型

 binary_integer: 整數,主要用來計數而不是用來表示字段類型

 number 數字類型

 char 定長字符串

 varchar2 變長字符串

 date 日期

 long 長字符串,最長2G

 boolean 布爾類型,可以取值為true,false ,和null。

聲明變量:

 set serveroutput on;

declare v_num number :=0;

  v_bl boolean :=false;

begin

    dbms_output.put_line('s');

end;

/

 

注意:declare 放在變量聲明的最前面,無論聲明多少個變量僅可放一個declare

     boolean 類型的變量是不能通過dbms_output.put_line()打印出來的。

得到表中字段類型

%type

set serveroutput on;

declare v_num number :=0;

  v_blnum v_num%type := v_num;

begin

    dbms_output.put_line(v_blnum);

end;

/

Record 類型:

 

set serveroutput on;

declare type type_record is record

(

    name1 varchar(20),

    age number

);

v_type_record type_record;

 

begin

    v_type_record.name1:='nihaoname';

    v_type_record.age:=23;

    dbms_output.put_line(v_type_record.name1||' '||v_type_record.age);

end;

/

使用%rowtype聲明record 變量(將對應表的所有類型作為該變量的成員)

set serveroutput on;

declare

 v_school school%rowtype;

begin

    v_school.name1:='nama';

    v_school.age:='age';

    dbms_output.put_line(v_school.name1||v_school.age);

end;

 

二、PL/SQL中的sql

1.       Insert 語句

Insert 語句必須要有返回值且只有一條返回。

Insert 語句中必須有into 將查到的數據放入到對應的變量中。注意into兩邊的值的個數要相同。

Into 后可以傳入一個record類型的變量,用於將查詢出來的值放入到該變量中。

set serveroutput on;

declare

v_school  school%rowtype;

begin

    select name1 ,age into v_school from school;

    dbms_output.put_line(v_school.name1);

end;

/

2.       Update 語句

sql%rowcount 得到剛剛執行sql影響的行數。

 

set serveroutput on;

declare

v_school  school%rowtype;

begin

     update school set name1='tes2t' where name1='s' ;

    dbms_output.put_line(sql%rowcount||'ss');

    commit;

end;

/

3.       執行DDL 語句

在pl/sql 中執行sql語句方法

 

三、判斷語句

set serveroutput on;

declare

v_num number(20) :=1399;

begin

    if (v_num <1200) then

    dbms_output.put_line('low');

    elsif(v_num<1800) then

    dbms_output.put_line('middle');

    else

    dbms_output.put_line('high');

    end if;

end;

/

四、循環

set serveroutput on;

declare

i number(20) :=1;

begin

    loop

    dbms_output.put_line('nihao'||i);

    i:=i+1;

    exit when (i>=5);

    end loop;

end;

/

 

set serveroutput on;

declare

i number(20) :=1;

begin

    while (i<=5) loop

    dbms_output.put_line('nihao'||i);

    i:=i+1;

    end loop;

end;

/

 

正序for循環

set serveroutput on;

declare

i number(20) :=1;

begin

   for a in 1..9 loop

    dbms_output.put_line(a);

    end loop;

end;

/

反序for循環

 

begin

   for a in reverse 1..9 loop

    dbms_output.put_line(a);

    end loop;

end;

/

注意:無論是正序還是反序for循環 循環的數字必須是從小到大排列如1..9

 

五、 錯誤處理

set serveroutput on;

declare

i number(20) :=1;

v_name varchar(20) :='';

begin

    select name1 into v_name from school where name1='ss';

    exception

    when no_data_found then

    dbms_output.put_line('沒有數據');

    when others then

    begin

        dbms_output.put_line('未知錯誤');

    end;

end;

/

SQLCODE SQLERRM 關鍵字代表出錯代碼和出錯信息。

set serveroutput on;

declare

i number(20) :=1;

v_name varchar(20) :='';

begin

    select name1 into v_name from school where name1='ss';

    exception

    when no_data_found then

    dbms_output.put_line('沒有數據'||SQLERRM || SQLCODE);

    when others then

    begin

        dbms_output.put_line('未知錯誤');

    end;

end;

/

 
 


免責聲明!

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



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