1. 程式人生 > >plsql程式設計中變數的宣告

plsql程式設計中變數的宣告

建立第一個程式hello world begin  dbms_output.put_line('Hello world'); end; / set serveroutput on;(輸出語句到dos視窗的命令) begin  dbms_output.put_line('Hello world'); end; / 就可以在dos視窗中看到Hello world; (簡單變數的宣告) 宣告變數: declare     v_name varchar2(20);(變數名在前,型別在後)
begin     v_name  := 'myname';(給變數進行賦值)
    dbms_output.put_line(v_name);
end; / (異常處理) 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('error'); 
end;     變數宣告的規則:
1  變數名不能使用保留字:(from,select) 2  第一個字元必須是字母 3  變數名最多包含30個字元 4  不要與資料庫的表或者列同名 5  每一行只能宣告一個變數     常用型別變數:
binary_integer :整數,主要用來計數而不是用來表示欄位型別,(提高效率) number;數字型別 char:定長字串; date:日期; long:長字串,最長2G; boolean 布林型別,可以取值true,false
,null值 常量的練習; declare         v_temp number(1);
        v_count binary_integer :=0;
        v_sal number(7,2) :=4000.00;
        v_date date := sysdate;
        v_pi constant number(3,2) := 3.14;
        v_valid boolean :=false;
        v_name varchar2(20) not null :='MyName';
begin          dbms_output.put_line('v_temp value' || v_temp);(||連線符)
end; / 註釋一句用'--'   註釋一段/*               */  dbms_output.put_line()不能列印boolean 變數
使用%type屬性: declare (變數宣告型別依據 表的型別變化)     v_empno number(4);
    v_empno2emp.empno%type;
    v_empno3v_empno2%type;
begin     dbms_output.put_line('Test');
end; 複合變數的宣告:     第一種:
Table變數型別(相當於java的陣列) declare         typetype_table_emp_empnois table of emp.empno%type index by binary_integer;
        v_empnostype_table_emp_empno;

begin          v_empnos(0) := 7369;
             v_empnos(2) := 7839;
             v_empnos(-1) := 9999;--(下標可以是小於0的)(註釋)
        dbms_output.put_line(v_empnos(-1)); end; Record變數型別:(相當於java的類) declare      typetype_record_dept isrecord
        (             deptno dept.deptno%type,
            dname dept.dname%type,
            loc dept.loc%type
        );     v_temp type_record_dept;
begin         v_temp.deptno :=50;(相當於引用去訪問成員變數)
            v_temp.dname :='aaaa';
            v_temp.loc     := 'bj';
            dbms_output.put_line(v_temp.deptno || '   '|| v_temp.dname);
end; 使用%rowtype宣告record 變數; declare    v_tempdept%rowtype;    begin           v_temp.deptno := 50;
        v_temp.dname := 'aaaa';
        v_temp.loc := 'bj';
        dbms_output.put_line(v_temp.deptno || ' ' || v_temp.dname);
end; SQL(select)語句在PlSQL中的應用: declare         v_ename emp.ename%type;
        v_sal emp.sal%type;
begin  --plsql語句中select語句中必須有into ,必須保證返回記錄        select ename,salintov_ename,v_sal from emp where empno = 7369;
        dbms_output.put_line(v_ename || ' ' || v_sal);
end; declare         v_emp emp%rowtype;
begin         select *into v_emp from emp where empno = 7369;
        dbms_output.put_line(v_emp.empno);
end; 其他SQL 語句在plsql中的應用: declare          v_deptno dept.deptno%type := 50;
        v_dname dept.dname%type :='aaaa';
        v_loc dept.loc%type := 'bj';
begin  --插入數值;        insert into dept2 values(v_deptno,v_dname,v_loc);
    commit;
end; declare          v_deptnoemp2.deptno%type:= 10;         v_count number;
begin        update emp2 set sal=sal/2 where deptno =v_deptno;
        --select deptno into v_deptno from emp2 where empno = 7369;
       -- select count(*) into v_count from emp2;
  --    sql表示剛剛執行完的那條語句,(執行完這條語句後,有多少記錄被                                影響)
        dbms_output.put_line(sql%rowcount || '條記錄被影響');
        commit;
end;