PL/SQL是一种基于Oracle数据库的过程式编程语言,是SQL语言的扩展,支持丰富的数据类型和操作符。以下是对PL/SQL数据类型及操作符的详细讲解:
PL/SQL数据类型
PL/SQL支持多种数据类型,包括数值型、字符型、日期型等。具体如下:
数值型
PL/SQL提供了多种数值类型,包括整型和浮点型。常用的数值类型有:
NUMBER(p, s)
,用于精确数字的存储,p代表总位数,s代表小数位数。BINARY_INTEGER
,用于存储常规整数,取值范围为-2^31~2^31-1。PLS_INTEGER
,用于存储常规整数,比BINARY_INTEGER
类型更快速和节省内存。
示例:
DECLARE
num1 NUMBER(5, 2) := 123.45; -- number类型,总位数为5,小数位数为2
num2 BINARY_INTEGER := 100; -- binary_integer类型,取值范围为-2147483648到2147483647
num3 PLS_INTEGER := 200; -- pls_integer类型,比binary_integer类型更快速和节省内存
BEGIN
DBMS_OUTPUT.PUT_LINE(num1 || ', ' || num2 || ', ' || num3); -- 输出结果:123.45, 100, 200
END;
字符型
PL/SQL提供了多种字符类型,包括定长字符型和变长字符型。常用的字符类型有:
CHAR(n)
,用于定长字符的存储,n代表字符数。VARCHAR2(n)
,用于变长字符的存储,n代表字符数,取值范围为1~32767。CLOB
,用于存储大量文本数据。NCHAR(n)
,用于Unicode字符的存储,n代表字符数。NVARCHAR2(n)
,用于Unicode字符的变长存储,n代表字符数,取值范围为1~16383。NCLOB
,用于存储大量Unicode文本数据。
示例:
DECLARE
str1 CHAR(10) := 'Oracle'; -- char类型,长度为10
str2 VARCHAR2(20) := 'PL/SQL'; -- varchar2类型,长度为20
str3 CLOB := '大量的文本数据'; -- clob类型,存储大量的文本数据
str4 NCHAR(5) := '中文'; -- nchar类型,用于Unicode字符的存储
str5 NVARCHAR2(10) := '数据库'; -- nvarchar2类型,用于Unicode字符的变长存储
str6 NCLOB := N'大量的Unicode文本数据'; -- nclob类型,用于存储大量Unicode文本数据
BEGIN
DBMS_OUTPUT.PUT_LINE(str1 || ', ' || str2 || ', ' || str4); -- 输出结果:'Oracle, PL/SQL, 中文'
END;
日期型
PL/SQL提供DATE
类型用于存储日期和时间数据。DATE
类型使用7个字节来存储,其中前4个字节用于存储日期,后3个字节用于存储时间。
示例:
DECLARE
date1 DATE := SYSDATE; -- date类型
BEGIN
DBMS_OUTPUT.PUT_LINE(date1); -- 输出结果为当前系统时间
END;
PL/SQL操作符
PL/SQL支持众多的操作符,包括算术运算符、比较运算符、逻辑运算符和位运算符等。具体如下:
算术运算符
PL/SQL支持的算术运算符包括加(+)、减(-)、乘(*)、除(/)和取模(MOD)。
示例:
DECLARE
a INTEGER := 10;
b INTEGER := 3;
BEGIN
DBMS_OUTPUT.PUT_LINE(a + b); -- 输出结果为13
DBMS_OUTPUT.PUT_LINE(a - b); -- 输出结果为7
DBMS_OUTPUT.PUT_LINE(a * b); -- 输出结果为30
DBMS_OUTPUT.PUT_LINE(a / b); -- 输出结果为3.3333
DBMS_OUTPUT.PUT_LINE(a MOD b); -- 输出结果为1
END;
比较运算符
PL/SQL支持的比较运算符包括等于(=)、不等于(<>)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。
示例:
DECLARE
a INTEGER := 10;
b INTEGER := 5;
BEGIN
IF a = b THEN
DBMS_OUTPUT.PUT_LINE('a等于b');
ELSIF a <> b THEN
DBMS_OUTPUT.PUT_LINE('a不等于b');
ELSIF a > b THEN
DBMS_OUTPUT.PUT_LINE('a大于b');
ELSIF a < b THEN
DBMS_OUTPUT.PUT_LINE('a小于b');
ELSIF a >= b THEN
DBMS_OUTPUT.PUT_LINE('a大于等于b');
ELSIF a <= b THEN
DBMS_OUTPUT.PUT_LINE('a小于等于b');
END IF;
END;
逻辑运算符
PL/SQL支持的逻辑运算符包括与(AND)、或(OR)和非(NOT)。
示例:
DECLARE
a BOOLEAN := TRUE;
b BOOLEAN := FALSE;
BEGIN
IF a AND b THEN
DBMS_OUTPUT.PUT_LINE('a与b为真');
ELSIF a OR b THEN
DBMS_OUTPUT.PUT_LINE('a或b为真');
ELSIF NOT(a AND b) THEN
DBMS_OUTPUT.PUT_LINE('a与b都为假');
END IF;
END;
位运算符
PL/SQL支持的位运算符包括按位与(AND)、按位或(OR)、按位非(NOT)、按位异或(XOR)、左移(SHL)和右移(SHR)。
示例:
DECLARE
a INTEGER := 10; -- 二进制值为 1010
b INTEGER := 3; -- 二进制值为 0011
BEGIN
DBMS_OUTPUT.PUT_LINE(a AND b); -- 输出二进制值为 0010,十进制值为 2
DBMS_OUTPUT.PUT_LINE(a OR b); -- 输出二进制值为 1011,十进制值为 11
DBMS_OUTPUT.PUT_LINE(NOT(a)); -- 输出二进制值为 0101,十进制值为 -11
DBMS_OUTPUT.PUT_LINE(a XOR b); -- 输出二进制值为 1001,十进制值为 9
DBMS_OUTPUT.PUT_LINE(a SHL 2); -- 输出二进制值为 101000,十进制值为 40
DBMS_OUTPUT.PUT_LINE(a SHR 1); -- 输出二进制值为 0101,十进制值为 5
END;
以上就是PL/SQL数据类型及操作符的详细讲解,希望能对大家学习PL/SQL语言有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PL/SQL数据类型及操作符 - Python技术站