oracle 表型別變數的使用
使用記錄型別變數只能儲存一行資料,這限制了select語句的返回行數,如果select語句返回多行就會錯。oracle提供了另外一種自定義型別,也就是表型別,它是對記錄型別的擴充套件,允許處理多行資料,類似於表。
建立表型別的語法如下:
type table_name is table of data_type [ not null ]
index by binary_integer ;
語法說明如下:
--table_name 建立的表型別名稱。
--is table 表示建立的是表型別。
--data_type 可以是任何合法的pl/sql資料型別,例如varchar2。
--index by binary_integer 指定系統建立乙個主鍵索引,用於引用表型別變數中的特定行。
使用表型別的例子:
例一:直接對錶型別變數賦值
declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
begin
new_emp(1).empno:=6800;
new_emp(1).ename:='tracy';
new_emp(1).job:='clerk';
new_emp(1).sal:=2500;
new_emp(2).empno:=6900;
new_emp(2).ename:='luck';
new_emp(2).job:='manager';
new_emp(2).sal:=4000;
dbms_output.put_line(new_emp(1).empno ||','||new_emp(1).ename||','||new_emp(1).job||
','||new_emp(1).sal);
dbms_output.put_line(new_emp(2).empno ||','||new_emp(2).ename||','||new_emp(2).job||
','||new_emp(2).sal);
end;
/例二:使用表型別變數的方法:變數名.方法名[索引號]
declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
begin
new_emp(1).empno:=6800;
new_emp(1).ename:='tracy';
new_emp(1).job:='clerk';
new_emp(1).sal:=2500;
new_emp(2).empno:=6900;
new_emp(2).ename:='luck';
new_emp(2).job:='manager';
new_emp(2).sal:=4000;
dbms_output.put_line(new_emp.first||','||new_emp.count||','||new_emp.last);
dbms_output.put_line(new_emp(1).empno ||','||new_emp(1).ename||','||new_emp(1).job||
','||new_emp(1).sal);
dbms_output.put_line(new_emp(2).empno ||','||new_emp(2).ename||','||new_emp(2).job||
','||new_emp(2).sal);
--new_emp.delete(1);
dbms_output.put_line(new_emp.next(1));
end;
//例三:與游標結合使用
declare
type my_emp is table of scott.emp%rowtype
index by binary_integer;
new_emp my_emp;
v_num number:=0;
cursor cur_emp is select empno,ename,job,sal from scott.emp;
begin
for v_emp in cur_emp loop
v_num:=v_num+1;
select * into new_emp(v_num) from scott.emp
where ename=v_emp.ename;
end loop;
for i in 1..new_emp.count loop
dbms_output.put_line(new_emp(i).empno ||','||new_emp(i).ename||','||new_emp(i).job||
','||new_emp(i).sal);
end loop;
end;
/注意:不能直接對錶變數賦值:select * into new_emp from scott.emp where deptno=30; 這種賦值方法是錯的,賦值需要使用下標,如上面的的例子。
Oracle常用變數型別
oracle常用變數型別,大致可以分為字元型 數值型 時間型別 布林型別和特殊型別 1 常用字元型別 char length 固長字元型別,無論你的資料有多少位元組,占用固定的位元組 varchar2 length 可變字元型別,如果你的資料沒有達到設定的最大位元組長度,則按實際字元長度計算佔存大小...
oracle 變數的使用
oralce定義標量 scalar declare v name varchar 20 定義乙個varchar長度20的變數 declare v number number 5,2 定義乙個number長度5,精度2的變數 declare v no number 5,2 999.99 定義乙個num...
oracle 變數使用
在oracle 中,對於乙個提交的sql語句,存在兩種可選的解析過程,color red 一種叫做硬解析,一種叫做軟解析。color color red 乙個硬解析需要經解析,制定執行路徑,優化訪問計畫等許多的步驟。color 硬解析不僅僅耗費大量的cpu,更重要的是會佔據重要的門閂 latch 資...