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;
对象信息函数
object_id('[database_name.[schema_name]. | schema_name.]object_name' [, 'object_type'])
描述:返回数据库对象的oid。如果没有查询权限或者对象不存在则返回NULL。
第二个参数object_type支持以下类型
属性名称 | 说明 |
---|---|
S | 系统表 |
U | 用户表 |
V | 视图 |
SO | 序列 |
C | check约束 |
D | DEAULTA约束 |
F | FOREIGN KEY约束 |
PK | 主键约束 |
UQ | UNIQUE约束 |
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)
```
意见反馈