跳到主要内容

数据类型

GBase 8s支持的数据类型如下:

类型分类 数据类型 备注
数值型 NUMBER
DECIMAL/DEC
INTEGER/INT
DOUBLE PRECISION
BIGINT
INT8
REAL
SMALLINT
字符型 CHAR
NCHAR
VARCHAR
NVARCHAR
布尔型 BOOLEAN
时间类型 DATE
TIMESTAMP[(precision)
INTERVAL YEAR[(precision)] TO MONTH

CHAR和VARCHAR空白填充差异

在本例中,CHAR变量和VARCHAR变量的最大大小为10个字符。每个变量接收一个5字符的值,其中一个为空格。

赋值给CHAR变量的值是空白填充到10个字符,您无法判断结果值中的6个尾随空格中哪一个是原始值。分配给VARCHAR变量的值没有更改,您可以看到它有一个末尾空格。

CREATE OR REPLACE PROCEDURE p_2_1 AS
first_name CHAR(10);
last_name VARCHAR(10);
BEGIN
first_name := 'John ';
last_name := 'Chen ';
DBMS_OUTPUT.PUT_LINE('*' || first_name || '*');
DBMS_OUTPUT.PUT_LINE('*' || last_name || '*');
END;
/
--Result:
--*John *
--*Chen *

输出BOOLEAN值

在本例中,如果参数的值为NULL,该过程接受一个 BOOLEAN参数并使用一个CASE语句来输出Unknown值。如果是TRUE,则为Yes,如果为FALSE,则为No。

CREATE OR REPLACE PROCEDURE print_boolean(b boolean)
AS
BEGIN
DBMS_OUTPUT.PUT_LINE (
CASE
WHEN b IS NULL THEN 'Unknown'
WHEN b THEN 'Yes'
WHEN NOT b THEN 'No'
END
);
END;
/
call print_boolean(TRUE);
call print_boolean(FALSE);
call print_boolean(NULL);

--Result:
--Yes
--No
--Unknown

SQL语句通过BOOLEAN函数调用PL/SQL函数

在本例中,SQL语句调用具有BOOLEAN参数的PL/SQL函数。

CREATE OR REPLACE FUNCTION f(x BOOLEAN, y INT)
RETURN INT AS
BEGIN
IF x THEN
RETURN y;
ELSE
RETURN 2*y;
END IF;
END;
/
CREATE OR REPLACE PROCEDURE p_2_3 AS
name varchar(30);
b BOOLEAN := TRUE;
BEGIN
SELECT last_name INTO name
FROM employees
WHERE employee_id = f(b, 100);
DBMS_OUTPUT.PUT_LINE(name);
b := FALSE;
SELECT last_name INTO name
FROM employees
WHERE employee_id = f(b, 100);
DBMS_OUTPUT.PUT_LINE(name);
END;
/
--Result:
--King
--Whalen