oracle 表型別變數的使用

2021-09-01 18:23:54 字數 2630 閱讀 4817

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 資...