联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
6.8.12.4 数据类型
更新时间:7/30/2024, 6:22:55 AM

标量类型

标量类型的含义是存放单个值。Inceptor 中支持的标量类型为 INT/STRING/DOUBLE 等 Inceptor 中所有支持的数据类型。具体内容可参考《数据类型对应表》。

STRING

在 Inceptor 中 STRING 既可以是字符串常量,也可以是字符串变量。对于字符串常量,要用单引号引起来;对于字符串变量,要在 PL/SQL 语句块中的 DECLARE 部分声明。

例 47. 对于字符串常量,可以直接引用
!set plsqlUseSlash true
BEGIN
   DBMS_OUTPUT.put_line ('Hello World')
END;
/
复制

输出结果为:

output

Hello World

例 48. 对于字符串变量,要事先声明
!set plsqlUseSlash true
DECLARE
   -- 定义一个 STRING 类型的变量为 l_message。
   l_message STRING 
BEGIN
   -- 给变量 l_message 赋值。
   l_message:= 'Hello World' 
   -- 输出变量 l_message 的值。
   DBMS_OUTPUT.put_line (l_message) 
END;
/
复制

输出结果为:

output

Hello World

INT

在 Inceptor 中 INT 为整数类型,可以直接使用一些整数,也可以在 PL/SQL 语句块的 DECLARE 部分声明一个 INT 类型的变量,用于存放 INT 类型的数据。

例 49. 直接使用整数
!set plsqlUseSlash true
BEGIN
   DBMS_OUTPUT.put_line (100)
END;
/
复制

输出结果为:

output

100

例 50. 声明一个 INT 类型的变量
!set plsqlUseSlash true
DECLARE
   -- 定义一个 INT 类型的变量为 l_int
   l_int int 
BEGIN
   -- 给变量 l_int 赋值
   l_int:= 1000 
   -- 输出变量 l_int 的值
   DBMS_OUTPUT.put_line (l_int) 
END;
/
复制

输出结果为:

output

1000

此外,Inceptor中所有支持的数据类型都可以在 PL/SQL 语句块的 DECLARE 部分中声明,此处不再赘述。

%TYPE 属性

使用 %TYPE 属性,可以声明一个变量,其数据类型与已经存在的变量,记录类型,表变量类型或者数据表的字段的数据类型相同,但新声明的变量不会继承已经存在的变量的值。

例 51. 使用 %TYPE 属性声明变量,其数据类型为另一个变量的类型
!set plsqlUseSlash true
DECLARE
   name string  := 'JoHn SmItH'
   upper_name name%TYPE := UPPER(name)
   lower_name name%TYPE := LOWER(name)
BEGIN
   DBMS_OUTPUT.PUT_LINE ('name: ' || name)
   DBMS_OUTPUT.PUT_LINE ('upper_name: ' || upper_name)
   DBMS_OUTPUT.PUT_LINE ('lower_name: ' || lower_name)
END;
/
复制

输出结果为:

output

name: JoHn SmItH

upper_name: JOHN SMITH

lower_name: john smith

例 52. 使用 %TYPE 属性声明变量 其数据类型为表中某字段的数据类型
!set plsqlUseSlash true
DECLARE
   v_acc_num transactions.acc_num%TYPE
   v_trans_id transactions.trans_id%TYPE
   v_price transactions.price%TYPE
BEGIN
   SELECT acc_num
     INTO v_acc_num
     FROM transactions
     WHERE stock_id='AA7105670';
   SELECT trans_id
     INTO v_trans_id
     FROM transactions
     WHERE trans_time='20140105100520';
   v_price:='11.11'
   DBMS_OUTPUT.PUT_LINE('acc_num:'|| v_acc_num)
   DBMS_OUTPUT.PUT_LINE('trans_id:'|| v_trans_id)
   DBMS_OUTPUT.PUT_LINE('price:'|| v_price)
END;
/
复制

输出结果为:

output

acc_num:6513065

trans_id:943197522

price:11.11

%ROWTYPE 属性

使用 %ROWTYPE 属性,可以声明一个记录型的变量,其记录型变量的分量名和类型与表/视图/游标中字段名和类型均相同,同样,记录型变量不会继承表/视图/游标中各个字段的值。
如果相应的表/视图发生变动,如表中新增字段或有字段被删除,则所声明的变量的也会发生相应的变化。

例 53. 利用 %ROWTYPE 属性声明记录型变量 trans,trans 变量的分量名和类型与表 transactions 中的字段名和类型相同
!set plsqlUseSlash true
DECLARE
   trans transactions%ROWTYPE
BEGIN
   SELECT *
     INTO trans
     FROM transactions
     WHERE stock_id='AA7105670';
   DBMS_OUTPUT.PUT_LINE('price:'||trans.price)
   DBMS_OUTPUT.PUT_LINE('trans_time:'||trans.trans_time)
   DBMS_OUTPUT.PUT_LINE('trans_type:'||trans.trans_type)
END;
/
复制

输出结果为:

output

price:12.13

trans_time:20140105100520

trans_type:b

复合类型

复合类型,即内部存在分量的数据类型,主要有 Records 和 Collections,需要用户自己去定义该类型,具体内容可参考后文的 Records 和 Collections 章节。