plsql程式設計中變數的宣告
阿新 • • 發佈:2019-01-22
建立第一個程式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;
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
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 變數
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;