返回首页

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

更新日期:2024年09月11日

rdownshift() 函数将以空终止的字符串内所有大写字符更改为小写字符。

语法
void rdownshift(s)
char *s;

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 858 -
s
指向以空终止的字符串的指针。

用法
rdownshift() 函数引用当前的语言环境,来确定大写和小写字母。对于缺省的语言环
境 US English,rdownshift() 使用 ASCII 小写字母(a-z)和大写字母(A-Z)。

如果您使用非缺省的语言环境,则 rdownshift() 使用该语言环境定义的小写和大写字
母。

返回代码
此样例程序在 demo 目录中的 rdownshift.ec 文件中。
/*
* rdownshift.ec *

The following program uses rdownshift() on a string containing alphanumeric and
punctuation characters.
*/

#include

main()
{
static char string[] = "123ABCDEFGHIJK'.;";

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

printf("\tInput string...: [%s]\n", string);
rdownshift(string);
printf("\tAfter downshift: [%s]\n", string);

printf("\nRDOWNSHIFT Sample Program over.\n\n");
}

GBase 8s ESQL/C 编程指南
南大通用数据技术股份有限公司
- 859 -
输出
RDOWNSHIFT Sample ESQL Program running.

Input string...: [123ABCDEFGHIJK'.;]
After downshift: [123abcdefghijk'.;]

RDOWNSHIFT Sample Program over.

语义完整性确保输入到行内的数据反映那一行的允许的值。该值必须在那一行的域或允许
的值集之内。例如,items 表的 quantity 列仅允许数值。如果可将该域之外的值输入到列
内,则违反该数据的语义完整性。

下列约束强制语义完整性:

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 181 -

数据类型
数据类型定义您可存储在列中的值的类型。例如,数据类型 SMALLINT 允许您将
从 -32,767 至 32,767 的值输入到列内。
缺省值
缺省值是当未指定显式的值时插入到该列内的值。例如,如果未输入名称,则
cust_calls 表的 user_id 列的缺省值为该用户的登录名称。
检查约束
检查约束指定对插入到列内的数据的条件。输入到表内的每一行都必须满足这些条
件。例如,items 表的 quantity 列可能检查大于或等于 1 的数量。
要获取关于在数据库设计中如何使用语义完整性约束的更多信息,请参阅《GBase 8s 数据
库设计和实现指南》。

在 SPL 例程内,请使用 LET 语句将值分配给您已定义的变量。
如果您未赋值给变量,或通过传递给例程的参数,或通过 LET 语句,则该变量有未定义
的值。
未定义的值与 NULL 值不同。如果您尝试以 SPL 例程内未定义的值使用变量,则会收到
错误。
您可以下列任一方式赋值给例程变量:

使用 LET 语句。

使用 SELECT INTO 语句。

将 CALL 语句与带有 RETURNING 子句的过程一起使用。

使用 EXECUTE PROCEDURE INTO 或 EXECUTE FUNCTION INTO 语句。

LET 语句
以 LET 语句,您可以等号(=)和有效的表达式或函数名称来使用一个或多个变量名称。
下图中的每一示例都是有效的 LET 语句。
图: 有效的 LET 语句。
LET a = 5;
LET b = 6; LET c = 10;
LET a,b = 10,c+d;
LET a,b = (SELECT cola,colb
FROM tab1 WHERE cola=10);
LET d = func1(x,y);
GBase 8s 允许您将值分配给 opaque 类型变量、row 类型变量,或 row 类型的字段。您还
可将外部函数或另一 SPL 函数的值返回到 SPL 变量。
假设您定义命名的 row 类型 zip_t 和 address_t,如 图 1 所示。每当您定义 row 类型变量
时,您必须在可使用它之前初始化该变量。下图展示您可能如何定义和初始化 row 类型变
量。您可使用任何 row 类型值来初始化该变量。
图: 定义和初始化 row 类型变量。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 284 -
DEFINE a address_t;
LET a = ROW ('A Street', 'Nowhere', 'AA',
ROW(NULL, NULL))::address_t
在您定义并初始化 row 类型变量之后,您可编写下图所示的 LET 语句。
图: 编写 LET 语句。
LET a.zip.z_code = 32601;
LET a.zip.z_suffix = 4555;
-- Assign values to the fields of address_t
提示: 请以 variable.field or variable.field.field 的形式使用点符号表示法来访问 row 类型的字段,
如 处理 row 类型数据 描述的那样。
假设您定义 opaque-type point,其包含定义二维点的两个值,且该值的文本表示为 '(x,y)'。
您还可能有计算圆的周长的函数 circum(),给定的点 '(x,y)' 和半径 r。
如果您定义以一点为圆心的 opaque 类型 center,以及计算圆的周长的函数 circum(),基于
点和半径,您可为每一变量编写变量声明。在下图中,c 是一个 opaque 类型变量,d 保存
外部函数 circum() 返回的值。
图: 编写变量声明。
DEFINE c point;
DEFINE r REAL;
DEFINE d REAL;

LET c = '(29.9,1.0)' ;
-- Assign a value to an opaque type variable

LET d = circum( c, r );
-- Assign a value returned from circum()
GBase 8s SQL 指南:语法 详细地描述 LET 语句的语法。

赋值给变量的其他方式
您可使用 SELECT 语句来从数据库访存一个值,并直接地将它分配给变量,如下图所示。

图: 从数据库访存一个值,并直接地将它分配给变量。
SELECT fname, lname INTO a, b FROM customer
WHERE customer_num = 101
请使用 CALL 或 EXECUTE PROCEDURE 语句来将由 SPL 函数或外部函数返回的值分
配给一个或多个 SPL 变量。您可能使用下图中的一个语句来将来自 SPL 函
数 read_address 的全名和地址返回到指定的 SPL 变量内。

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司
- 285 -
图: 返回来自 SPL 函数的全名和地址。
EXECUTE FUNCTION read_address('Smith')
INTO p_fname, p_lname, p_add, p_city, p_state,
p_zip;

CALL read_address('Smith')
RETURNING p_fname, p_lname, p_add, p_city,
p_state, p_zip;