簡述
本篇文章主要介紹pl/sql的變量的簡單數據類型,複雜數據類型定義和調用方法,希望能對讀者有些許作用
數據類型介紹
變量的定義和調用
在pl/sql中,定義的變量在聲明之後,可以直接在後續的sql調用,使用上非常方便
簡單數據類型的定義和使用
--定義變量
declare
newname varchar(20) :='zl';
begin
--引用變量
update user_lin set username=newname where username='lin';
end;
commit;
--變量的賦值
declare
newname varchar(20) ;
begin
select username into newname from user_lin where username='lin';
DBMS_OUTPUT.PUT_LINE('僱傭的用戶名:'||newname);
end;
複雜數據類型的定義和調用
數組的定義
--定義數組
DECLARE
--定義數組長度為五的數組變量
TYPE reg_varray_type IS VARRAY(5) OF VARCHAR(25);
--初始化變量
v_reg_varray REG_VARRAY_TYPE;
BEGIN
v_reg_varray := reg_varray_type
('中', '美', '英', '日本', '法');
DBMS_OUTPUT.PUT_LINE('地?名?:'||v_reg_varray(1)||'、'
||v_reg_varray(2)||'、'
||v_reg_varray(3)||'、'
||v_reg_varray(4));
DBMS_OUTPUT.PUT_LINE('賦予初值NULL的第5個成員的值:'||v_reg_varray(5));
v_reg_varray(5) := '法';
DBMS_OUTPUT.PUT_LINE('第5個成員的值:'||v_reg_varray(5));
END;
集合數據類型的定義
--定義集合類型
declare
type test_rec is record(
newname varchar(20):='孫明',
nickname varchar(20):='zl'
);
a1 test_rec;
begin
insert into user_lin(username,nickname)values(a1.newname,a1.nickname);
end;
--賦值
declare
type test_rec is record(
newname user_lin.username%Type,
nickname user_lin.nickname%Type
);
a1 test_rec;
begin
select username,nickname into a1 from user_lin where username='sun';
DBMS_OUTPUT.PUT_LINE(a1.newname||'---'||a1. nickname);
end;
%Type和%RowType使用介紹
這兩個關鍵字方便後續數據類型的維護,即不預先定義變量類型,讓數據類型跟隨數據庫列的類型變化而變化,降低維護成本
%TYPE:
定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型
相同,这时可以使用%TYPE。
使用%TYPE 特性的优点在于:
1.所引用的数据库列的数据类型可以不必知道;
2. 所引用的数据库列的数据类型可以实时改变;
declare
newname user_lin.username%type;
nickname user_lin.nickname%type;
begin
select username, nickname into newname,nickname from user_lin where username='sun';
end;
%ROWTYPE:
PL/SQL 提供%ROWTYPE 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。
使用%ROWTYPE 特性的优点在于:
1.所引用的数据库中列的个数和数据类型可以不必知道;
2.所引用的数据库中列的个数和数据类型可以实时改变。
declare
info user_lin%rowtype;
begin
select * into info from user_lin where username='sun';
end;