shark-系统信息函数

本章节只包含shark插件新增的系统信息函数。

会话信息函数

  • @@FETCH_STATUS

    描述:返回最后一条游标FETCH语句的状态,该语句可以是针对连接当前打开的任何游标发出的。0表示FETCH成功,-1表示FETCH失败。

    返回值类型:int

    示例:

    select @@FETCH_STATUS;
    
  • @@ROWCOUNT

    描述:返回受上一句影响的行数。如果行数大于20亿,请使用ROWCOUNT_BIG()。

    返回值类型:int

    示例:

    select @@ROWCOUNT;
    
  • ROWCOUNT_BIG()

    描述:返回受上一句影响的行数。该函数的功能与@@ROWCOUNT类似,区别在于ROWCOUNT_BIG()的返回类型为bigint。

    返回值类型:bigint

    示例:

    select ROWCOUNT_BIG();
    
  • @@SPID

    描述:返回当前用户进程的会话ID。

    返回值类型:bigint

    示例:

    select @@SPID;
    
  • scope_identity()

    描述:返回插入到同一作用域中标识列内的最后一个标识值。

    返回值类型:numeric(38, 0)

    示例:

    openGauss=# CREATE TABLE TZ(Z_id INT IDENTITY PRIMARY KEY, Z_name VARCHAR(20) NOT NULL);
    CREATE TABLE
    openGauss=# INSERT INTO TZ(Z_NAME) VALUES('Lisa');
    INSERT 0 1
    openGauss=# SELECT scope_identity();
    scope_identity 
    ----------------
                1
    (1 row)
    

对象信息函数

  • object_id('[database_name.[schema_name]. | schema_name.]object_name' [, 'object_type'])

    描述:返回数据库对象的oid。如果没有查询权限或者对象不存在则返回NULL。

    第二个参数object_type支持以下类型

属性名称说明
S系统表
U用户表
V视图
SO序列
Ccheck约束
DDEAULTA约束
FFOREIGN KEY约束
PK主键约束
UQUNIQUE约束
AF聚合函数
FN函数
P存储过程
TR触发器
返回值类型:int

示例:

```
CREATE TABLE sys.students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT DEFAULT 0,
    grade DECIMAL(5, 2)
);
set search_path = 'sys';
select object_id('students');
object_id 
-----------
16666
(1 row)

select object_id('sys.students', 'U');
object_id 
-----------
16666
(1 row)
```
  • objectproperty(oid, property)

    描述:返回插件框架中对象的对应属性结果。对象类型不符合返回NULL。

    property可选范围

    返回值类型:int

    表1 property属性表

属性名称对象类型说明
IsDefault任何对象返回0。
IsDefaultCnst任何对象是否为DEFAULT约束。1=True, 0=False
IsDeterministic函数返回0。
IsIndexed表、视图有索引的表或视图。1=True, 0=False
IsInlineFunction函数内联函数。1=True, 0=False
IsSysShipped任何对象sys框架下的对象。1=True, 0=False
IsPrimaryKey任何对象是否为PRIMARY KEY约束。1=True, 0=False
IsProcedure任何对象是否为存储过程。1=True, 0=False
IsRule任何对象返回0。
IsScalarFunction函数是否为标量值函数。1=True, 0=False
IsSchemaBound函数、视图返回0。
IsTable是否为表。1=True, 0=False
IsTableFunction函数是否为表值函数。1=True, 0=False
IsTrigger任何对象是否为触发器。1=True, 0=False
IsUserTable是否为用户表。1=True, 0=False
IsView视图是否为视图。1=True, 0=False
OwnerId任何对象返回对象所有者的oid。
ExeclsQuotedIdentOn函数、存储过程、触发器、视图返回1。
ExeclsIsAnsiNullsOn函数、存储过程、触发器、视图返回1。
TableFulltextPopulateStatus返回0。
TableHasVarDecimalStorageFormat返回0。
示例:
其中database为当前数据库

```
CREATE TABLE sys.students (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    age INT DEFAULT 0,
    grade DECIMAL(5, 2)
);
set search_path = 'sys';
select objectproperty(object_id('students'), 'ownerid') as ownerid;
 ownerid 
---------
10
(1 row)
select objectproperty(object_id('sys.students'), 'istable') as ownerid;
 ownerid 
---------
1
(1 row)
select objectproperty(object_id('database.sys.students'), 'isview') as ownerid;
 ownerid 
---------
0
(1 row)
```
  • databasepropertyex(database, property)

    描述:对于指定的数据库,此函数返回指定数据库选项或属性的当前设置。

    参数类型:

    • database数据类型为nvarchar(128),用于指定databasepropertyex要返回其命名属性信息的数据库的名称。
    • property数据类型为varchar(128),用于指定要返回的数据库属性名称。

    返回值类型:sql_variant

    表2:property属性表

    属性名称字段说明返回值
    Collation数据库默认字符序返回pg_database中查询数据库的datcollate属性值
    ComparisonStyle字符序规则的Windows比较样式返回0
    Edition数据库版本或者服务层级返回Standard
    IsAnsiNullsEnabled所有和null的比较值被作为unknownopenGauss中为会话级别参数,默认返回为1
    IsAnsiPaddingEnabled在比较或者插入前,字符串将被填充到相同长度返回0
    IsAnsiWarningsEnabled发生标准错误条件时,SQL Server会发出错误消息或者警告消息,如果当聚合函数中出现Null值,会发出错误和警告返回0
    IsArithmeticAbortEnabled如果执行查询时发生溢出或被零除错误,将结束查询返回0
    IsAutoClose在最后一个用户退出后,数据库完全关闭并释放资源返回0
    IsAutoCreateStatistics查询优化器根据需要创建单列统计信息以提高查询性能openGauss中默认为1,返回1
    IsAutoCreateStatisticsIncremental条件允许时,创建的单列统计信息递增返回0
    IsAutoShrink数据库文件定期收缩返回0
    IsAutoUpdateStatistics查询优化器会自动更新潜在的过期统计信息返回0
    IsClone数据库是使用DBCC CLONEDATABASE创建的一个用户的数据库的schema-only和statistic-only的副本返回0
    IsCloseCursorsOnCommitEnabled事务提交后,会关闭所有打开的游标返回0
    IsDatabaseSuspendedForSnapshotBackup数据库已挂起返回0
    IsFulltextEnabled支持对数据库进行全文和语义检索返回0
    IsInStandBy数据库以只读方式联机,同时支持恢复日志1为true,0为false
    IsLocalCursorsDefault游标声明默认为LOCAL返回0
    IsMemoryOptimizedElevateToSnapshotEnabled事务隔离级别设置为读提交,读未提交及其以下隔离级别时,使用SNAPSHOT隔离访问内存优化表返回0
    IsMergePublished如果安装了复制(备份),允许SQL Server支持数据库表发布用来合并复制(备份)返回0
    IsNullConcatNull拼接操作产生Null返回0
    IsNumericRoundAbortEnabled表达式中精度缺失将产生错误返回0
    IsParameterizationForced参数化数据库是否设置为FORCED返回0
    IsQuotedIdentifersEnabled允许使用双引号返回0
    IsPublished如果安装了复制,SQL Server支持发布数据库表供快照复制或者事务复制使用返回0
    IsRecursiveTriggersEnable递归触发器启用返回0
    IsSubscribed数据库订阅以发布返回0
    IsSyncWithBackup数据库为发布数据库或分布式数据库,并且支持在不中断事务复制的情况下还原返回0
    IsTornPageDetectionEnabledSQL Server检测断电或者其他系统故障导致的不完全I/O操作1为true,0为false
    IsVerifiedClone数据库是使用DBCC CLONEDATABASE的WITH VERIFY_CLONEDB选项创建的schema-only和statistics-only的用户数据库复制返回0
    IsXTPSupported数据库是否支持XTP返回0
    LastGoodCheckDbTime指定数据库上最后一次成功的DBCC CHECKDB日期和时间返回NULL
    LCID排序规则的Windows区域设置标识符返回0
    MaxSizeInBytes最大数据库大小(字节单位)返回0
    Recovery数据库恢复模式返回NULL
    ServiceObjective描述SQL数据库或Azure Synapse Analytics中的数据库性能级别返回NULL
    ServiceObjectiveIdSQL数据库中的服务目标ID返回0
    SQLSortOrderSQL Server早期版本中支持的SQL Server排序ID返回0
    Status数据库状态返回ONLINE
    Updateability显示是否可以修改数据1为true,0为false
    UserAccess显示哪些用户可以访问数据库返回NULL
    Version用于创建数据库的SQL Server代码的内部版本号返回openGauss版本序号
    ReplicaID已连接的超大规模数据库/副本的副本ID返回NULL

    示例:

    openGauss=# SELECT databasepropertyex('existDB','Collation') AS Collation;
    collation  
    -------------
    zh_CN.UTF-8
    (1 row)
    
  • suser_name([server_user_id])

    描述:返回用户的登录表示名

    参数类型:

    • server_user_id数据类型为oid,用于指定suser_name要返回的用户的登录标识名对应的oid,当用户不输入任何用户oid时,该函数会默认返回当前用户的登陆标识名,如果输入为NULL,该函数返回NULL。

    返回值类型:nvarchar(128)

    示例:

    openGauss=# SELECT suser_name(10) AS suser_name;
    suser_name 
    ------------
    user_name
    (1 row)
    
  • suser_sname([server_user_sid])

    描述:返回用户的登录表示名

    参数类型:

    • server_user_sid数据类型为varbinary(85),用于指定suser_sname要返回的用户的登录标识名对应的oid,该函数目前等同于suser_name

    返回值类型:nvarchar(128)

    示例:

    openGauss=# SELECT suser_sname(10::varbinary) AS suser_sname;
    suser_sname 
    -------------
    user_name
    (1 row)
    
  • @@PROCID

    描述:返回当前模块的oid。模块可以是存储过程、用户自定义函数或触发器。

    返回值类型:oid

    示例:

    -- 创建存储过程,调用@@PROCID
    openGauss=# CREATE PROCEDURE test_procid
    openGauss-# AS
    openGauss$# DECLARE
    openGauss$#     ProcID integer;
    openGauss$# BEGIN
    openGauss$#     ProcID = @@PROCID;
    openGauss$#     RAISE INFO 'Stored procedure %', ProcID;
    openGauss$# END;
    openGauss$# /
    CREATE PROCEDURE
    
    -- 调用存储过程
    openGauss=# SELECT test_procid();
    INFO:  Stored procedure 49675
    test_procid 
    -------------
    
    (1 row)
    
意见反馈
编组 3备份
    openGauss 2025-09-06 07:42:39
    取消