返回首页

gbase数据、南大通用产品文档:GBase8sdeccvasc() 函数

更新日期:2024年09月11日

deccvasc() 函数将以 C char 类型中作为可打印字符保存的值转换为 decimal 类型数
值。

语法
mint deccvasc(strng_val, len, dec_val)
char *strng_val;
mint len;
dec_t *dec_val;
strng_val
指向要将其值 deccvasc() 转换为 decimal 值的字符串的指针。
len
strng_val 字符串的长度。
dec_val
指向 deccvasc() 将转换的结果放置其中的 decimal 结构的指针。

用法

字符串 strng_val 可包含下列符号:
前置符号,或正号(+)或负号(-)
小数点,以及小数点游标的数字
以 e 或 E 开头的指数。您可在指数前添加符号,或正号(+)或负号(-)。
deccvasc() 函数忽略字符串中开头的空格。

返回代码
0
转换成功。
-1200
该数值太大,以至于不能放入 decimal 类型结构内(溢出)。
-1201

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 628 -

该数值太小,以至于不能放入 decimal 类型结构内(下溢)。
-1213
该字符串有非数值字符。
-1216
该字符串有不良指数。

示例

demo 目录中的 deccvasc.ec 文件包含下列样例程序。
/*
* deccvasc.ec *

The following program converts two strings to DECIMAL numbers and displays the values
stored in each field of the decimal structures.
*/

#include

EXEC SQL include decimal;

char string1[] = "-12345.6789";
char string2[] = "480";

main()
{
mint x;
dec_t num1, num2;

printf("DECCVASC Sample ESQL Program running.\n\n");

if (x = deccvasc(string1, strlen(string1), &num1))
{
printf("Error %d in converting string1 to DECIMAL\n", x);

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 629 -

exit(1);
}
if (x = deccvasc(string2, strlen(string2), &num2))
{
printf("Error %d in converting string2 to DECIMAL\n", x);
exit(1);
}
/*
* Display the exponent, sign value and number of digits in num1.
*/
printf("\tstring1 = %s\n", string1);
disp_dec("num1", &num1);

/*
* Display the exponent, sign value and number of digits in num2.
*/
printf("\tstring2 = %s\n", string2);
disp_dec("num2", &num2);

printf("\nDECCVASC Sample Program over.\n\n");
exit(0);
}


disp_dec(s, num)
char *s;
dec_t *num;
{
mint n;

printf("%s dec_t structure:\n", s);
printf("\tdec_exp = %d, dec_pos = %d, dec_ndgts = %d, dec_dgts: ",
num->dec_exp, num->dec_pos, num->dec_ndgts);

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 630 -

n = 0;
while(n < num->dec_ndgts)
printf("%02d ", num->dec_dgts[n++]);
printf("\n\n");
}
输出
DECCVASC Sample ESQL Program running.

string1 = -12345.6789
num1 dec_t structure:
dec_exp = 3, dec_pos = 0, dec_ndgts = 5,
dec_dgts: 01 23 45 67 89

string2 = 480
num2 dec_t structure:
dec_exp = 2, dec_pos = 1, dec_ndgts = 2,
dec_dgts: 04 80

DECCVASC Sample Program over.

参数说明
gs_initdb 支持的常用参数和不常用参数请分别参见表4-1 和表4-2。
表4-1 常用参数说明
参数
参数说明
取值范围
-A, --auth=METHOD
指定本地用户连接数据库时的认
证方法,即pg_hba.conf 配置文件
中host 和local 所在行的认证方
METHOD 的取值:

trust

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
218
参数
参数说明
取值范围
法。
除非用户对本地用户都是信任
的,否则不要使用默认值trust。
须知:
若取值为md5,则需手动修改参
数文件postgresql.conf.sample 中







password_encryption_type 参数的
值,修改为0,且放开注释使之生
效。
gs_initdb 工具需同时配合-W
的使用。

reject

md5(不安全的算法,
为了兼容老版本而存
在)

sha256

sm3
默认值:trust
--auth-host=METHOD
指定本地用户通过TCP/IP 连接数
据库时的认证方法,即:
pg_hba.conf 配置文件中host 所在
行的认证方法。
指定此参数则会覆盖-A 参数的
值。
METHOD 的取值:

trust

reject

md5(不安全的算法,
为了兼容老版本而存
在)

sha256

sm3
默认值:trust
--auth-local=METHOD
指定本地用户通过Unix 域套接字
连接数据库时的认证方法,即
pg_hba.conf 配置文件中local 所在
行的认证方法。
指定此参数则会覆盖-A 参数的
值。
METHOD 的取值:

trust

reject

md5(不安全的算法,
为了兼容老版本而存
在)

sha256

sm3

peer(仅用于local 模

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
219
参数
参数说明
取值范围
式)
默认值:trust
-c, --enable-dcf
设置安装的节点为DCF 模式
-
[-D,
--pgdata=]DATADIR
指定数据目录的位置。
DATADIR 的取值:用户自
定义。不能包括“|”, “;”,
“&”,“$”,“<”,“>”,“`”,
“\\”,“!”这几个字符。
--nodename=NODENA
ME
初始化的节点名称。
节点的命名需要遵守如下
规范:

节点名称必须为小写
字母(a-z)、下划线
(_)、特殊符号#、数
字(0-9)。

节点名称必须以小写
字母(a-z)或下划线
(_)开头。

节点名称不能为空,

最大的长度为64 个字
符。
-E,
--encoding=ENCODIN
G
为新数据库设置编码格式。
如果使用此参数,
需要加上
--locale 选项指定支持此编
码格式的区域。如果不加
--locale 选项,则采用系统
默认的区域,
如果系统默认
区域的编码格式和用此参
数指定的编码格式不匹配
则会导致数据库初始化失
败。
如果不指定此参数,
则使用
系统默认区域的编码格式。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
220
参数
参数说明
取值范围
系统默认区域和编码格式
可以使用locale 命令查看,
如下:
locale|grep LC_CTYPE
LC_CTYPE="en_US.UTF-8
"
其中UTF-8 表示系统默认
区域的编码格式。
不能包括“|”, “;”,
“&”,
“$”,
“<”,“>”,“`”,“\\”,“!”这
几个字符。
--locale=LOCALE
为新数据库设置缺省的区域。可
以用locale -a 查看可用的区域,

zh_CN.gbk 等。
如果不希望指定特
定的区域,则可以用C。
须知:
如果用户设置了数据库的编码格
式,则用户选择区域的编码格式
必须与用户设置的编码格式一
致,否则数据库初始化会失败。
不能包括“|”, “;”,
“&”,
“$”,
“<”,“>”,“`”,“\\”,“!”这
几个字符。
例如用户要将数据库编码
格式初始化为GBK,可以
采用如下步骤:
用locale -a |grep gbk命令查
看系统支持gbk 编码的区
域,如下:
locale -a|grep gbk
zh_CN.gbk
zh_SG.gbk
初始化数据库时加入
--locale=zh_CN.gbk 选项。
--dbcompatibility=DBC
OMPATIBILITY
指定兼容的数据库的类型。
取值范围:A、B、C、PG。
分别表示兼容O、MY、TD
和POSTGRES。
--lc-collate=LOCALE
--lc-ctype=LOCALE
为新数据库设置指定范畴的区
域。
各参数的取值必须是操作
系统支持的值。
不能包括不
能包括“|”, “;”,“&”,“$”,

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
221
参数
参数说明
取值范围
--lc-messages=LOCAL
E
--lc-monetary=LOCAL
E
--lc-numeric=LOCALE
--lc-time=LOCALE
“<”,“>”,“`”,“\\”,“!”这
几个字符。
说明:
如果用户在数据库安装的
时候没有指定--lc-collate 参
数,则--lc-collate 参数的默
认值为C。
--no-locale
和--locale=C 等价。
-
--pwfile=FILE
gs_initdb 时从文件FILE 中读取数
据库中系统管理员的密码。该文
件的第一行将被当作密码使用。
FILE 可以是“相对路径+文
件”的形式,
也可以是“绝对
路径+文件”的形式。
相对路
径是相对当前路径的。
不能
包括“|”, “;”,
“&”,
“$”,
“<”,
“>”,“`”,“\\”,“!”这几个
字符。
-T,
--text-search-config=CF
G
设置缺省的文本搜索方式。此配
置项的值不会做正确性校验,配
置成功后,有日志记录提醒当前
配置项的取值。
text-search-config 的取值:

english 全文搜索

simple 普通文本搜索
默认值:simple
-U, --username=NAME
选择数据库系统管理员的用户
名。
取值范围:
正常的数据库用
户。不能包括“|”, “;”,“&”,
“$”,“<”,“>”,“`”,“\\”,
“!”这几个字符。
默认值:运行gs_initdb 的
操作系统用户。
-W, --pwprompt
gs_initdb 时强制交互式输入数据
库管理员的密码。
-

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
222
参数
参数说明
取值范围
-w,
--pwpasswd=PASSWD
gs_initdb 时通过命令行指定的管
理员用户的密码,而不是交互式
输入。
设置的密码要符合复杂度
要求:

最少包含8 个字符;

不能和用户名和当前
密码(ALTER)相同,
或和当前密码反序;

至少包含大写字母
(A-Z )、小写字母
(a-z)、数字、非字
母数字字符(限定为
~!@#$%^&*()-_=+\|[{
}];:,<.>/?)四类字符中
的三类字符。
-C, --enpwdfiledir=DIR
gs_initdb 时指定的经AES128 加
密算法加密过的密码文件所在目
录。gs_initdb 会将该目录下密码
文件进行解密,同时把解密后的
密码做密码复杂度校验,校验通
过的话会将此密码作为用户的密
码。
说明:
加密密码文件需使用gs_guc 工具
生成:
gs_guc encrypt -K GBase@123
-D Dir
如果用户指定多个-w 和-C 参数,
gs_initdb 会将用户输入的最后一
个-w 或-C 参数作为用户的需求,
即输入密码的明文或经过
AES128 加密后的密码。
不能包括“|”, “;”,
“&”,
“$”,
“<”,“>”,“`”,“\\”,“!”这
几个字符。
-X,
--xlogdir=XLOGDIR
声明事务日志存储的目录。
所设置的目录,必须满足运行
只支持绝对路径。
不能包括
“|”, “;”,
“&”,
“$”,
“<”,
“>”,

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
223
参数
参数说明
取值范围
GBase 8c 的用户有读写权限。
“`”,“\\”,“!”这几个字符。
-S, --security
安全方式初始化数据库。
以-S 方式初始化的数据库
后,
创建的数据库用户权限
受到限制,默认不再具有
public schema 的使用权限。
表4-2 不常用参数说明
参数
参数说明
取值范围
-d, --debug
从初始化后端打印调试输出信息。初始
化后端是gs_initdb用于创建系统表的程
序。
-
-L
DIRECTO
RY
gs_initdb 初始化数据库所需要的输入文
件的路径。通常是不必要的。如果需要
明确声明的话,程序会提示输入。因该
参数意为创建指定配置信息的数据库,
建议将share/postgresql 下的所有涉及启
动相关的子目录及文件全部复制过来,
避免其他因素的影响。
初始化数据库所需的输入文件路
径。不能包括“|”, “;”,“&”,“$”,
“<”,“>”,“`”,“\\”,“!”这几个字
符。
-n,
--noclean
不指定该参数时,
当gs_initdb 发现一些
错误妨碍它完成创建数据库的工作时,
它将在检测到不能结束工作之前将其
创建的所有文件删除。这个选项禁止任
何清理动作,因而对调试很有用。
-
-s, --show
显示内部设置。
-
-H,
--host-ip
初始化openGauss 节点node_host。
不能包括“|”, “;”,“&”,“$”,“<”,
“>”,“`”,“\\”,“!”这几个字符。

GBase 8c 工具参考手册
南大通用数据技术股份有限公司
224
参数
参数说明
取值范围
-V,
--version
打印gs_initdb 版本信息,然后退出。
-
-?, --help
显示关于gs_initdb命令行参数的帮助信
息,然后退出。
-

SQLDescribeParam 是一个 ODBC API,它返回查询参数的元数据。
在较早版本的 GBase 8s ODBC Driver 中,如果调用 API 来取得关于嵌入在另一例程内
的表达式值或参数的信息,SQLDescribeParam API 返回 SQL_UNKNOWN。对于
BOOLEAN、
LVARCHAR,
或由其他 UDR 中下列表达式返回的内置的非 opaque GBase
8s 数据类型,此限制不再适用:

二进制算术表达式
o
加(+)
o
减(-)
o
乘(*)
o
除(/)

关系运算符表达式
o
小于(<)
o
小于或等于(<=)
o
等于(=、==)
o
大于或等于(>=)
o
大于(>)
o
不等于(<>、!=)

下列字符串运算
o
串联(||)
o
MATCHES
o
LIKE

BETWEEN ... AND 条件表达式
例如,如果列 tab1.c1 是 INT 数据类型,则 SQLDescribeParam() 为下列查询的输入主
变量返回类型 int:
select c1, c2 from tab1 where ABS(c1) > ?;
来自表达式另一侧的 UDR 可以是列表达式或内置的例程,但它不可以是用户定义的例
程。在较早的版本中,在下列情况下,SQLDescribeParam API 为嵌入在另一过程中的表
达式值和参数返回 SQL_UNKNOWN:

表达式的另一侧的值为用户定义的例程。

同一表达式的另一运算对象是用户定义的例程。

GBase 8s ODBC Driver 程序员指南
南大通用数据技术股份有限公司
- 28 -

表达式的任何运算对象的数据类型不是 BOOLEAN、LVARCHAR 或内置的非
opaque 数据类型。