記錄型別 學習筆記

2022-09-11 03:24:13 字數 4331 閱讀 7528

定義記錄型別語法

type 型別名稱 is record (

成員名稱 資料型別 [[not null] [:= 預設值] 表示式] ,

...成員名稱 資料型別 [[not null] [:= 預設值] 表示式]

) ;

示例一、記錄型別接收查詢返回結果

type emp_type is record( --

定義記錄型別

ename emp.ename%

type,

job emp.job

%type,

hiredate emp.hiredate

%type,

sal emp.sal

%type,

comm emp.comm

%type

);v_emp emp_type;

--定義乙個指定的復合型別變數

begin

v_eno :=&

eno;

select

ename, job, hiredate, sal, comm

into

v_emp

from

emp

where empno =

v_eno;

dbms_output.put_line(sql

%rowcount||'

員工編號:

'|| v_eno ||

'姓名:'||

v_emp.ename ||'

職位:'

|| v_emp.job ||

'入職日期:'||

to_char(v_emp.hiredate,

'yyyy-mm-dd

') ||

'基本工資:'||

v_emp.sal ||'

佣金:'

|| nvl(v_emp.comm, 0

)); exception

when others then

-20009,'

此員工資訊不存在');

end;

示例二

declare

type dept_type

isrecord(

deptno dept.deptno

%type:=

99,--

定義預設值

dname dept.dname%

type,

loc dept.loc

%type

);v_dept dept_type;

begin

v_dept.dname:='

tt'; --

為記錄型別成員賦值

v_dept.loc:='上海

';dbms_output.put_line(

'部門編號:

'||v_dept.deptno||

'部門名稱:

'||v_dept.dname||

'部門位置:'||

v_dept.loc);

end;

示例三、定義巢狀的記錄型別

declare

type dept_type

isrecord(

deptno dept.deptno

%type :=

99, --

定義預設值

dname dept.dname%

type,

loc dept.loc

%type);

type emp_type

is record( --

定義記錄型別

empno emp.empno%

type,

ename emp.ename

%type,

job emp.job

%type,

hiredate emp.hiredate

%type,

sal emp.sal

%type,

comm emp.comm

%type,

dept dept_type);

v_emp emp_type;

begin

select

e.empno,

e.ename,

e.job,

e.hiredate,

e.sal,

e.empno,

d.deptno,

d.dname,

d.loc

into

v_emp.empno,

v_emp.ename,

v_emp.job,

v_emp.hiredate,

v_emp.sal,

v_emp.comm,

v_emp.dept.deptno,

v_emp.dept.dname,

v_emp.dept.loc

from

emp e, dept d

where e.empno = d.deptno(+

)

and empno =

&empno;

dbms_output.put_line(sql

%rowcount||'

員工編號:

'|| v_emp.empno ||

'姓名:'||

v_emp.ename ||'

職位:'

|| v_emp.job ||

'入職日期:'||

to_char(v_emp.hiredate,

'yyyy-mm-dd

') ||

'基本工資:'||

v_emp.sal ||'

佣金:'

|| nvl(v_emp.comm, 0

)); dbms_output.put_line(

'部門編號:

'|| v_emp.dept.deptno ||

'部門名稱:'||

v_emp.dept.dname ||'

部門位置:'||

v_emp.dept.loc);

end;

示例四、增加一條新的記錄

declare

type dept_type

isrecord(

deptno dept.deptno

%type, --

定義預設值

dname dept.dname%

type,

loc dept.loc

%type

);v_dept dept_type;

begin

v_dept.deptno:

=&deptno;

v_dept.dname:='

&dname

'; --

為記錄型別成員賦值

v_dept.loc:=

'&loc';

insert

into dept values v_dept; --

直接插入記錄型別

end;

示例

五、修改一條記錄

declare

type dept_type

isrecord(

deptno dept.deptno

%type, --

定義預設值

dname dept.dname%

type,

loc dept.loc

%type

);v_dept dept_type;

begin

v_dept.deptno:

=&deptno;

v_dept.dname:='

&dname

'; --

為記錄型別成員賦值

v_dept.loc:=

'&loc';

update dept set row=v_dept where deptno=

v_dept.deptno;

exception

when others then

dbms_output.put_line(

'沒有這個部門');

end;

記錄型別 學習筆記

type 型別名稱 is record 成員名稱 資料型別 not null 預設值 表示式 成員名稱 資料型別 not null 預設值 表示式 示例一 記錄型別接收查詢返回結果 使用記錄型別接收查詢返回結果 declare v eno emp.empno type type emp type i...

mysql json型別學習筆記

mysql從5.7.8版本開始支援json型別。json列儲存大小為系統的 max allowed packet json列不能擁有預設值。json型別值分為陣列和物件兩種型別 abc 10,null,true,false json的建立和插入 mysql create table t1 c1 js...

JS的資料型別(學習記錄)

js的資料型別分為基本型別和引用型別。基本型別又稱為值型別,顧名思義,就是按值訪問的型別,基本型別的值會儲存在棧中,儲存與複製的是值本身。基本型別可以使用typeof檢測資料型別。字串型別,使用 或 包起來。數值型別,在js中所有數字皆用浮點數值表示。注意 nan nan 0.1 0.2 0.3 布...