使用
%TYPE
与
%ROWTYPE
可以根据已有类型定义变量。
PL/SQL
是一种
强类型的编程语言
,所有的变量都必须在它声明之后才可以使用,变量都要求在
DECLARE
部分进行声明,而对于变量的名称也有如下的一些规定:
变量名称的组成可以由字母、数字、
_
、
$
、
#
等组成;
所有的变量名称要求以
字母开头
,不能是
Oracle
中的
保留字(关键字)
;
变量的长度最多只能为
30
个字符。
声明变量的语法
所有的变量都要求在
DECLARE
部分之中进行,在定义变量的时候也可以为其赋默认值,变量声明语法如下:
变量名称
[CONSTANT]
类型
[NOT NULL] [:=value] ;
v_result VARCHAR2(30);
----
这里没有赋值
BEGIN
DBMS_OUTPUT.put_line('v_result
的内容是
['||v_result||']');
v_result
的内容是
[]
DECLARE
v_resultA NUMBER := 100 ; --
定义一个变量同时赋值
v_resultB NUMBER ; --
定义一个变量没有设置内容
BEGIN
v_resultb := 30 ; --
没有区分大小写
DBMS_OUTPUT.put_line('
计算的结果是:
' || (v_resultA + v_resultB) ) ;
END ;
v_resultA NUMBER NOT NULL := 100 ; --
定义一个非空变量
v_resultA
,同时赋值
BEGIN
DBMS_OUTPUT.put_line('v_resultA
变量内容:
' || (v_resultA) ) ;
END ;
v_resultA CONSTANT NUMBER NOT NULL := 100 ; --
定义一个常量同时赋值
BEGIN
DBMS_OUTPUT.put_line('v_resultA
常量内容:
' || (v_resultA) ) ;
END ;
DECLARE
eno
emp.empno%TYPE ; --
与
empno
类型相同
ename
emp.ename%TYPE ; --
与
ename
类型相同
BEGIN
DBMS_OUTPUT.put_line('
请输入雇员编号:
') ;
eno := &empno ; --
由键盘输入雇员编号
SELECT
ename INTO ename
FROM emp WHERE empno=eno ;
DBMS_OUTPUT.put_line('
编号为:
' || eno || '
雇员的名字为:
'|| ename) ;
END ;
编号为:
7900
雇员的名字为:
JAMES
deptRow
dept%ROWTYPE ; --
装载一行
dept
记录
BEGIN
SELECT *
INTO
deptRow
FROM dept WHERE deptno=10 ;
DBMS_OUTPUT.put_line('
部门编号:
'||deptRow.deptno || '
,名称:
' || deptRow.dname || '
,位置:
' || deptRow.loc) ;
END ;
部门编号:
10
,名称:
ACCOUNTING
,位置:
NEW YORK
v_url := '
http://www.cnblogs.com/thescentedpath/
' ;
DBMS_OUTPUT.put_line(v_info) ;
DBMS_OUTPUT.put_line(v_url) ;
END ;
BEGIN
v_url := '
http://www.cnblogs.com/thescentedpath/
' ;
DBMS_OUTPUT.put_line(v_info || '
,网址:
' || v_url) ;
END ;
DECLARE
v_url VARCHAR2(50) := '
http://www.cnblogs.com/thescentedpath/
' ;
v_num1 NUMBER := 80 ;
v_num2 NUMBER := 30 ;
BEGIN
IF
v_num1 > v_num2 THEN
DBMS_OUTPUT.put_line('
第
1
个数字比第
2
个数字大。
') ;
END IF ;
IF
v_ur
l LIKE
'%wendy%'
THEN
DBMS_OUTPUT.put_line('
网址之中包含
wendy
单词。
') ;
END IF ;
END ;
v_flag1 BOOLEAN := TRUE ;
v_flag2 BOOLEAN := FALSE ;
v_flag3 BOOLEAN ;
BEGIN
IF v_flag1 AND ( NOT v_flag2 ) THEN
DBMS_OUTPUT.put_line('v_flag1 AND ( NOT v_flag2 ) = TRUE') ;
END IF ;
IF v_flag1 OR v_flag3 THEN
DBMS_OUTPUT.put_line('v_flag1 OR v_flag3 = TRUE') ;
END IF ;
IF v_flag1 AND v_flag3 IS NULL THEN
DBMS_OUTPUT.put_line('v_flag1 AND v_flag3
的结果为
NULL
。
') ;
END IF ;
END ;