返回首页

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

更新日期:2024年09月11日

使用参数段向例程传递一个特定值作为输入。无论何处,只要您在语法图中看到
对 argument 的引用,就请使用本段。
语法
参数

元素
描述
限制
语法
parameter
由您指定它的
值的参数
必须和 CREATE FUNCTION 或
CREATE PROCEDURE 语句声明的名
称相匹配
标识符
singleton
_select
返回单值的内
嵌查询
必须返回一个与 parameter 兼容
的数据类型和长度的值
SELECT
语句
用法

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1587
CREATE PROCEDURE 或 CREATE FUNCTION 语句可以为 UDR 定义一个参
数列表。如果参数列表非空,则调用 UDR 时必须输入参量。参量是一个特定的
值,它的数据类型兼容相应的 UDR 参数。
当执行一个 UDR 时,可以任选下面两种方法之一输入参量:

和参数名一起(以 parameter name = expression) 的形式)输入,即使参
量和参数的顺序不同

按照位置输入,不加 parameter 名称,每个 expression 的顺序和参量对
应的参数相同。(这有时称为 ordinal 格式。)
在例程的一次单个调用中不能混合使用这两种方法来指定参量。例如:如果为一
个参量指定了一个参数名,那么必须对所有参量都使用参数名。
在以下示例中,用户定义的过程要求三个字符参量 t 、d 和 n,两个语句都是有
效的:
EXECUTE PROCEDURE add_col (t ='customer', d ='integer', n ='newint');
EXECUTE PROCEDURE add_col ('customer','newint','integer') ;
比较参量和参数列表
当用 CREATE PROCEDURE 或 CREATE FUNCTION 创建或注册一个 UDR
时,用 UDR 要求的参数名和数据类型声明一个参数列表。(对于用 C 或
Java™ 语言编写的外部例程,参数名是可选的。)有关声明参数的详细信息,请
参阅例程参数列表。
如果不同的例程具有相同的标识符但是声明的参数个数不同,用户定义的例程可
以是过载的。有关重载的更多信息,请参阅 例程重载以及例程签名。
如果试图以超出 UDR 要求的参量来执行 UDR ,就会接收到一条错误消息。
如果已少于 UDR 要求的参量来调用 UDR,那么就可以将省略的参量说成缺少。
数据库服务器将缺少的参量初始化为它们相应的缺省值。这个初始化过程发生在
UDR 主体中第一条可执行语句之前。
如果缺少的参量没有缺省值。则 GBase 8s 发出错误。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1588
已命名的参数不能用于调用在它们的例程特征符中重载数据类型的 UDR。只有例
程的特征符具有不同数量的参数时,命名的参数用于解析非唯一的例程名称才是
有效的:
func( x::integer, y ); -- VALID if only these 2 routines
func( x::integer, y, z ); -- 具有相同的 'func' 标识

func( x::integer, y ); -- NOT VALID if both routines have
func( x::float, y) ; -- 相同的标识和两个参数
对于顺序和命名的参数,如果两个或更多的 UDR 特征符具有多个数目的缺省
值,则会执行参数最少的例程:
func( x, y default 1 )
func( x, y default 1, z default 2 )
如果两个同时称作 func 的已注册的 UDR 具有以上所示的特征符,那么语句
EXECUTE func(100) 调用 func(100,1)。
不能使用命名的参数提供缺省值的子集,除非这些参数遵循例程特征符的位置顺
序。即,不能跳过一些参量而依赖于数据库服务器提供它们的缺省值。
例如,给定以下特征符:
func( x, y default 1, z default 2 )
可执行:
func( x=1, y=3 )
但不能执行:
func( x=1, z=3 )
表达式的子集作为参量有效
参数的语法图涉及这一节的内容。
除了聚集函数以外,可以使用任何表达式作为参量。如果使用子查询或函数调用
作为参量,那么子查询或函数必须返回适当数据类型和大小的单个值。有关 SQL
表达式的用途和语法,请参阅表达式。

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1589
远程数据库中的 UDR 参量
远程数据库中的 UDR 参数在大多数上下文中,UDR 在跨数据库和跨服务器分布
式操作中有效,但每个参与的数据库必须具有相同的日志记录模式。
除了 BIGSERIAL 、BYTE 、SERIAL 、SERIAL8 和 TEXT,可作为跨服务器的 UDR
的参数的有效的数据类型 包括分布式查询中的数据类型中列出的不透明的内置
SQL 数据类型和这些附加内置透明和 DISTINCT 数据类型:

BOOLEAN

LVARCHAR

不透明的内置类型的 DISTINCT

BOOLEAN DISTINCT

LVARCHAR DISTINCT

以上列出的 DISTINCT 类型的 DISTINCT
如果 UDR 是在所有参与的数据库中定义 ,则这些数据类型可以是 SPL 、C 或
Java™ 语言的 UDR 的参数。在这些数据类型上定义的任何隐式或显式转换必须
在所有参与的 GBase 8s 实例之间复制。DISTINCT 数据类型必须在参与分布式
查询的所有数据库中定义完全相同的数据类型层次结构。
相同的数据类型在调用相同的 GBase 8s 实例的其它数据库中的 UDR 时也作为参
数有效,以及以下其它类型的参数:

BLOB

CLOB

您显式转换为内置类型的 UDT
所有的 UDR 、UDT 、DISTINCT 数据类型 、DISTINCT 类型层次结构、转型
和转型函数必须在所有参与的数据库中注册。有关分布式操作中的 DISTINCT 类
型的更多信息,请参阅 分布式操作中的 DISTINCT 类型。

tenant 表在 sysadmin 数据库中,它包含了有关 tenant 数据库的信息。

类型
描述
tenant_id
int
tenant 数据库的唯一 ID
tenant_dbsname
varchar(128)
tenant 数据库的名称
tenant_resources
bson
tenant 数据库的属性
将这列切换成 JSON 去查看该属性
tenant_last_updated datetime year to
second
tenant 数据库最近一次更新的时间点
tenant_comment
lvarchar(2048)
tenant 数据库的详细信息

提供用于RowUpdating 事件的数据。这个类不能被继承。对于该类所有成



GBase 8a 程序员手册ADO.NET 篇
南大通用数据技术股份有限公司

- 319 -
员的列表,参考 GBaseRowUpdatingEventArgs 成员。

继承层次
System.Object
|__ System.EventArgs
|__ System.Data.Common.RowUpdatingEventArgs
|__ GBase.Data.GBaseClient.GBaseRowUpdatingEventArgs

语法
[Visual Basic]
Public NotInheritable Class GBaseRowUpdatingEventArgs _

Inherits RowUpdatingEventArgs
[C#]
public sealed class GBaseRowUpdatingEventArgs :
RowUpdatingEventArgs


线程安全性
这个类型的公共静态成员(在Visual Basic 中为 Shared)对于多线程操
作是保证线程安全的,对于实例不保证线程安全性。

必要条件
命名空间:GBase.Data.GBaseClient