-
使用% TYPE
使用PL/SQL的%TYPE,使得开发人员可以基于已有的变量类型,或者是数据库列的类型来指定变量的类型,示例如下:DECLARE v_empno emp.empno%TYPE; -- 使用%TYPE定义emp表empno列类型的变量 v_empno v_empno%TYPE; -- 定义与v_empno相同的变量 v_salary NUMBER(7, 3) NOT NULL := 1350.5; -- 定义薪水变量 v_othersalary v_salary%TYPE := 1500; -- 定义与v_salary相同类型的变量 BEGIN NULL; END
注:对于数据库列类型,%TYPE只提供类型信息,并不提供NOT NULL约束信息。
-
使用%ROWTYPE
%ROWTYPE是与%TYPE相似的用于绑定到数据库表列的类型,%TYPE仅绑定到单个数据库列的类型,而%ROWTYPE则绑定到一整行的所有列类型,可以将使用%ROWTYPE定义的变量看作是一条记录类型,示例如下:DECLARE v_emp emp%ROWTYPE; -- 定义emp表列类型的记录 v_emp2 emp%ROWTYPE; BEGIN -- 查询emp表并将结果写入v_emp记录中 SELECT * INTO v_emp FROM emp where empno = &empno; -- 输出结果信息 DBMS_OUTPUT.PUT_LINE(v_emp.empno || CHR(10) || v_emp.ename); -- 为记录类型赋值 v_emp2.empno := 8000; v_emp2.ename := '张三'; v_emp2.job := '经理'; v_emp2.mgr := 7902; v_emp2.hiredate := date '2021-09-01'; v_emp2.sal := 8000; v_emp2.deptno := 20; -- 将记录类型插入数据表 INSERT INTO emp VALUES v_emp2; END
注:%ROWTYPE同%TYPE一样,只提供类型信息,并不能保证NOT NULL约束。
除了使用%ROWTYPE定义表列类型的变量外,还可以用来定义游标类型的变量,使用%ROWTYPE指定游标类型的变量,变量的值将是游标的SELECT语句查询出来的值,例如如下代码定义了游标emp_cursor,使用%ROWTYPE指定emp_cursor类型的变量:
DECLARE CURSOR emp_cursor IS SELECT empno, ename, job, sal, hiredate FROM emp; --定义游标类型 v_emp emp_cursor%ROWTYPE; -- 使用%ROWTYPE定义游标类型的变量 BEGIN OPEN emp_cursor; -- 循环并提取游标数据 LOOP FETCH emp_cursor INTO v_emp; -- 要注意游标移动到最尾部退出游标 EXIT WHEN emp_cursor%NOTFOUND; -- 输出游标数据 DBMS_OUTPUT.PUT_LINE(v_emp.empno || ' ' || v_emp.ename || ' ' || v_emp.job || ' ' || v_emp.sql || ' ' || TO_CHAR(v_emp.hiredate, 'YYYY-MM-DD')); END LOOP; -- 关闭游标 CLOSE emp_cursor; END
-
数据类型
PL/SQL提供多种数据类型,这些类型可以分为如下四大类:
标量类型:用来保存单个值的数据类型,包含字符型、数字型、布尔型和日期型。
复合类型:复合类型是具有内部子组件的类型,可以包含多个标量类型作为其属性。复合类型包含记录、嵌套表、索引表和变长数组。
引用类型:引用类型是一个指向不同存储位置的指针,引用类型包含REF CURSOR和REF这两种。
LOB类型:LOB类型又称大对象类型,用来处理二进制和大于4GB的字符串。 -
运算符类型
在PL/SQL中,运算符可以分为如下四大类:
赋值运算符:用来为变量或常量赋值。
连接运算符:用来追加一个字符串操作数到另一个字符串操作数。
逻辑运算符:包含AND、OR和NOT,允许进行逻辑操作处理。
比较运算符:用来比较两个表达式或操作数的异同,返回值为TRUE、FALSE或NULL,如果一个表达式的值为NULL,那么整个结果都为NULL。
ORACLE-变量和类型
最新推荐文章于 2024-05-30 11:04:43 发布