返回首页

gbase数据、南大通用产品文档:GBase8sCREATE FUNCTION FROM 语句

更新日期:2024年09月11日

使用 CREATE FUNCTION FROM 语句访问 CREATE FUNCTION 语句驻留在独
立文件中的用户定义的函数。
该语句是 SQL ANSI/ISO 标准的扩展。请在 ESQL/C 中 使用此语句。
语法

元素
描述
限制
语法
file
包含完整 CREATE FUNCTION
语句文本的文件的路径和文件
名。缺省路径名为当前目录。
必须存在,且仅
包含一个 CREATE
FUNCTION 语句
必须遵循操作
系统规则
file_var 存储 file 值的变量
与 file 的限制
相同
特定于语言
用法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 267
使用 C 或 Java™ 语句编写的函数称为外部函数。当 IFX_EXTEND_ROLE 配置
参数设置成 ON 时,只有被授予内置 EXTEND 角色的用户才可以创建外部函
数。
GBase 8s ESQL/C 程序不能直接创建用户定义的函数。即,它不能包含 CREATE
FUNCTION 语句。
在 GBase 8s ESQL/C 程序内创建这些函数:
1. 用 CREATE FUNCTION 语句创建源文件。
2. 使用 CREATE FUNCTION FROM 语句将该源文件的内容发送到数据库服
务器以执行。
您在 file 参数中指定的文件只能包含一个 CREATE FUNCTION 语句。
例如:假设以下 CREATE FUNCTION 语句位于名为 del_ord.sql 的独立文件
中:
CREATE FUNCTION delete_order( p_order_num INT) RETURNING INT, INT;
DEFINE item_count INT;
SELECT count(*) INTO item_count FROM items
WHERE order_num = p_order_num;
DELETE FROM orders WHERE order_num = p_order_num;
RETURN p_order_num, item_count;
END FUNCTION;
在 GBase 8s ESQL/C 程序中,您可以使用以下 CREATE FUNCTION FROM 语
句访问 delete_order( ) SPL 函数:
EXEC SQL create function from 'del_ord.sql';
如果您不确定文件中的 UDR 是用户定义的函数还是用户定义的过程,请使用
CREATE ROUTINE FROM 语句。
您提供的文件名是相对的。如果您提供不带路径名的简单文件名(如上述示例所
示),则客户端应用程序在当前目录中查找该文件。
重要: GBase 8s ESQL/C 预处理器不处理您指定的文件的内容。它只将内容发送
到数据库服务器以执行。因此,对于您在 CREATE FUNCTION FROM 中指定的文件
是否实际包含 CREATE FUNCTION 语句没有进行语法检查。然而,要提高代码的可
读性,建议匹配这两个语句。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 268

默认值为0 ,不支持segment_id(tbname) 函数,值设置为1 时支持
Segment_id(tbname)函数。

如果存储池中包含条目,可从存储池中的可用空间创建存储空间或块。
先决条件:存储池中必须包含条目(目录、熟文件或原始设备)。
要从存储池创建存储空间或块,请执行以下操作:

GBase 8s 管理员指南
南大通用数据技术股份有限公司
- 225 -
运行带以下自变量之一的 admin() 或 task() 函数从存储池创建空间。
命令中所用元素取决
于要创建的空间类型。

EXECUTE FUNCTION task("create dbspace from storagepool",
"space_name", "size", "page_size", "mirroring_flag", "first_extent", "next_extent");

EXECUTE FUNCTION task("create tempdbspace from storagepool",
"space_name", "size", "page_size");

EXECUTE FUNCTION task("create blobspace from storagepool",
"space_name", "size", "page_size", "mirroring_flag",);

EXECUTE FUNCTION task("create sbspace from storagepool",
"space_name", "size", "log_flag", "mirroring_flag",);

EXECUTE FUNCTION task("create tempsbspace from storagepool",
"space_name", "size",);

EXECUTE FUNCTION task("create chunk from storagepool", "space_name",
"size",);
示例
以下命令创建名为 blobspace1 的镜像 Blob 空间。新 Blob 空间的大小为 100 千兆字节,
Blob 页大小为 100 页。
EXECUTE FUNCTION task("create blobspace from storagepool", "blobspace1", "100
GB", "100", "1");
以下命令向名为 logdbs 的数据库空间添加块。新块的大小为 200 兆字节。
EXECUTE FUNCTION task("create chunk from storagepool", "logdbs", "200 MB");