返回首页

gbase数据、南大通用产品文档:GBase8s

更新日期:2024年09月11日

Type name is required for this data type
此数据类型是不透明类型、distinct 类型或复杂类型,它需要一个名称。
使用 IN 参数的设置方法,并为以类型名称作为参数的 OUT 参数注册方法。


GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
622
(2 rows)
示例4:
TD 模式下,
coalesce 参数输入int 和varchar 类型,
那么解析成varchar 类型。
A 模
式下会报错。
--在A 模式下,创建A 兼容模式的数据库a_1。
gbase=#CREATE DATABASE a_1 dbcompatibility = 'A';
--切换数据库为a_1。gbase=#\c a_1
--创建表t1。
a_1=# CREATE TABLE t1(a int, b varchar(10));
--查看coalesce 参数输入int 和varchar 类型的查询语句的执行计划。a_1=# EXPLAIN
SELECT coalesce(a, b) FROM t1;
ERROR: COALESCE types integer and character varying cannot be matched LINE 1:
EXPLAIN SELECT coalesce(a, b) FROM t1;
^
CONTEXT: referenced column: coalesce
--删除表。
a_1=# DROP TABLE t1;
--切换数据库为gbase。a_1=# \c gbase
--在TD 模式下,创建TD 兼容模式的数据库td_1。gbase=#CREATE DATABASE td_1
dbcompatibility = 'C';
--切换数据库为td_1。gbase=#\c td_1
--创建表t2。
td_1=# CREATE TABLE t2(a int, b varchar(10));
--查看coalesce 参数输入int 和varchar 类型的查询语句的执行计划。td_1=# EXPLAIN
VERBOSE select coalesce(a, b) from t2;
QUERY PLAN
-----------------------------------------------------------------------------
----------
Data Node Scan (cost=0.00..0.00 rows=0 width=0) Output:
(COALESCE((t2.a)::character varying, t2.b)) Node/s: All dbnodes
Remote query: SELECT COALESCE(a::character varying, b) AS "coalesce" FROM
public.t2 (4 rows)

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
623
--删除表。
td_1=# DROP TABLE t2;
--切换数据库为gbase。td_1=# \c gbase
--删除A 和TD 模式的数据库。gbase=#DROP DATABASE a_1; gbase=#DROP DATABASE td_1;
示例5:ORA 模式下,将整个表达式最终的返回值类型定为result1 的数据类型,或者与
result1 同类型范畴的更高精度的数据类型。
--在ORA 模式下,创建ORA 兼容模式的数据库ora_1。
gbase=#CREATE DATABASE ora_1 dbcompatibility = 'A';
--切换数据库为ora_1。gbase=#\c ora_1
--开启Decode 兼容性参数。
set sql_beta_feature='a_style_coerce';
--创建表t1。
ora_1=# CREATE TABLE t1(c_int int, c_float8 float8, c_char char(10), c_text text,
c_date date);
--插入数据。
ora_1=# INSERT INTO t1 VALUES(1, 2, '3', '4', date '12-10-2010');
--result1 类型为char,defresult 类型为text,text 精度更高,返回值的类型由char
更新为text。ora_1=# SELECT decode(1, 2, c_char, c_text) AS result,
pg_typeof(result) FROM t1;
result | pg_typeof
--------+-----------
4
| text (1 row)
--result1 类型为int,属于数值类型范畴,返回值的类型置为numeric。
ora_1=# SELECT decode(1, 2, c_int, c_float8) AS result, pg_typeof(result) FROM
t1; result | pg_typeof
--------+-----------
2 | numeric
(1 row)
--不存在defresult 数据类型向result1 数据类型之间的隐式转换,报错处理。ora_1=#
SELECT decode(1, 2, c_int, c_date) FROM t1;

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
624
ERROR: CASE types integer and timestamp without time zone cannot be matched LINE
1: SELECT decode(1, 2, c_int, c_date) FROM t1;
^
CONTEXT: referenced column: c_date
--关闭Decode 兼容性参数。set sql_beta_feature='none';
--删除表。
ora_1=# DROP TABLE t1;
DROP TABLE
--切换数据库为postgres。ora_1=# \c postgres
--删除ORA 模式的数据库。
gbase=#DROP DATABASE ora_1; DROP DATABASE

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
625
8
全文检索

存储在数据源上的一列数据有一个 SQL 数据类型。
GBase 8s ODBC Driver 将特定于 GBase 8s 的 SQL 数据类型映射为以 ODBC SQL 语法
定义的 ODBC SQL 数据类型。(驱动程序通过 SQLGetTypeInfo 返回这些映射。它还使

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 11 -
用 ODBC SQL 数据类型来描述 SQLColAttributes 和 SQLDescribeCol 中的列和参数的数
据类型)。
每一 SQL 数据类型对应于一个 ODBC C 数据类型。在缺省情况下,
驱动程序假设存储位
置的 C 数据类型对应于该位置绑定至其的列或参数的 SQL 数据类型。
如果存储位置的 C
数据类型不是缺省的 C 数据类型,则应用程序可以使用 SQLBindCol 的 TargetType、
SQLGetData 的 fCType 参数,
以及 SQLBindParameter 中的 ValueType 参数来指定正确的
C 数据类型。在驱动程序从数据源返回数据之前,它将数据转换为指定的 C 数据类型。
在驱动程序将数据发送至数据源之前,
它将数据从指定的 C 数据类型转换为 SQL 数据类
型。
GBase 8s 数据类型名称不同于 Microsoft™ ODBC 数据类型名称。要获取关于这些差异的
信息,请参阅《GBase 8s ODBC Driver 程序员指南》。