金仓数据库 KingbaseES SQL 语言参考手册 (8. 函数(九))

8.299. SCALE

用法:

scale(numeric)

功能:

SCALE返回参数的精度(小数点后的位数)。

例子:

SELECT scale(8.41);

8.300. SCORE

用法:

SCORE(lable number)

输入参数:

lable:表示第几个contains函数的标签。

输出:

CONTAINS查询生成的分数值

功能:

返回CONTAINS查询生成的分数值。目前该函数只支持score(1)。

例子:

8.301. SESSION_ID

用法:

session_id()

功能:

SESSION_ID返回当前会话的整数。

例子:

以下示例返回当前会话的整数:

SELECT session_id();

+------------+
| session_id |
+============+
| 4          |
+------------+

8.302. SESSION_USER

用法:

session_user

功能:

SESSION_USER返回当前会话的用户名。返回类型为NAME。

例子:

以下示例返回当前会话的用户名:

SELECT session_user;

+--------------+
| SESSION_USER |
+==============+
| U1           |
+--------------+

8.303. SESSIONTIMEZONE

用法:

sessiontimezone

功能:

SESSIONTIMEZONE返回当前会话的时区。返回类型是时区偏移量(格式为字符类型'[+|-]TZH:TZM')或时区区域名称,具体取决于用户如何在最近的ALTER SESSION语句中指定会话时区值。

笔记:即使客户端操作系统使用命名时区,默认客户端会话时区也是一个偏移量。如果您希望默认会话时区使用命名时区,则将ORA_SDTZ客户端环境中的变量设置为 KingBase 时区区域名称。

例子:

以下示例返回当前会话的时区:

SELECT sessiontimezone FROM DUAL;

SESSION

-08:00

8.304. SETSEED

用法:

setseed(dp)

输入参数:

dp:random函数的种子值(-1.0和1.0), 包括边界值。 类型为double precision。

功能:

为后续要使用的random函数设置种子。

例子:

select setseed(0.12);
setseed
---------

(1 row)

8.305. SETVAL

用法:

SETVAL(regclass, bigint)

输入参数:

regclass:序列的名子。 bigint: 设置的值

输出:

返回设定值

功能:

设定指定序列的当前值。

例子:

SELECT setval('sequence_test'::text, 32);
setval
--------
  32
(1 row)

8.306. SETWEIGHT

用法:

setweight(vector tsvector, weight "char")

功能:

SETWEIGHT为vector的每一个元素分配权重。

例子:

SELECT setweight('fat:2,4 cat:3 rat:5B'::tsvector,'A');

8.307. SHA224

用法:

sha224(bytea)

功能:

SHA224用于计算二进制字符串的SHA-224哈希值。

例子:

以下示例返回计算二进制字符串的SHA-224哈希值:

SELECT SHA224('abc'::bytea);

+------------------------------------------------------------+
| SHA224                                                     |
+============================================================+
| \x23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7 |
+------------------------------------------------------------+

8.308. SHA256

用法:

sha256(bytea)

功能:

SHA256用于计算二进制字符串的SHA-256哈希值。

例子:

以下示例返回计算二进制字符串的SHA-256哈希值:

SELECT SHA256('abc'::bytea);

+--------------------------------------------------------------------+
| SHA256                                                             |
+====================================================================+
| \xba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
+--------------------------------------------------------------------+

8.309. SHA384

用法:

sha384(bytea)

功能:

SHA384用于计算二进制字符串的SHA-384哈希值。

例子:

以下示例返回计算二进制字符串的SHA-384哈希值:

SELECT SHA384('abc'::bytea);

+----------------------------------------------------------------------------------------------------+
| SHA384                                                                                             |
+====================================================================================================+
| \xcb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7 |
+----------------------------------------------------------------------------------------------------+

8.310. SHA512

用法:

sha512(bytea)

功能:

SHA512用于计算二进制字符串的SHA-512哈希值。

例子:

以下示例返回计算二进制字符串的SHA-512哈希值:

SELECT SHA512('abc'::bytea);

+------------------------------------------------------------------------------------------------------------------------------------+
| SHA512                                                                                                                             |
+====================================================================================================================================+
| \xddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f |
+------------------------------------------------------------------------------------------------------------------------------------+

8.311. SIGN

用法:

sign({dp|numeric})

功能:

SIGN返回 的符号n。此函数将任何数字数据类型或任何可以隐式转换为 的非数字数据类型作为参数NUMBER,并返回NUMBER。

对于NUMBER类型的值,符号为:

  • -1 如果n<0

  • 0 如果n= 0

  • 1 如果n>0

对于二进制浮点数 (BINARY_FLOAT和BINARY_DOUBLE),此函数返回数字的符号位。符号位是:

  • -1 如果n<0

  • +1 如果n>=0 或n=NaN

例子:

以下示例表明函数 ( -15) 的参数 <0:

SELECT SIGN(-15) "Sign" FROM DUAL;

+------+
| Sign |
+======+
| -1   |
+------+

8.312. SIN

用法:

sin({dp|numeric})

功能:

SIN返回(以弧度表示的角度) n的正弦值。

此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。如果参数是BINARY_FLOAT,则函数返回BINARY_DOUBLE。否则,函数返回与参数相同的数值数据类型。

例子:

以下示例返回 30 度的正弦值:

SELECT SIN(30 * 3.14159265359/180) "Sine of 30 degrees" FROM DUAL;

+--------------------+
| Sine of 30 degrees |
+====================+
| .5                 |
+--------------------+

8.313. SINH

用法:

sinh({dp|numeric})

功能:

SINH返回n的双曲正弦。

此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。如果参数是BINARY_FLOAT,则函数返回BINARY_DOUBLE。否则,函数返回与参数相同的数值数据类型。

例子:

以下示例返回 1 的双曲正弦:

SELECT SINH(1) "Hyperbolic sine of 1" FROM DUAL;

+----------------------+
| Hyperbolic sine of 1 |
+======================+
| 1.17520119           |
+----------------------+

8.314. SPLIT_PART

用法:

split_part(string text, delimiter text, field int)

功能:

函数返回给定字符串expr1中按给定字符expr2切分后的字符串数组中的第n个字符串。其中,指定返回的字符串序号n必须大于0

例子:

以下示例返回 3 平方:

SELECT SPLIT_PART('joeuser@mydatabase','@m',2);

+-------------+
| split_part  |
+=============+
| ydatabase   |
+-------------+

8.315. SQRT

用法:

sqrt(n)

功能:

SQRT返回n的平方根。

此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。该函数返回与参数的数值数据类型相同的数据类型。

也可以看看:

  • 如果n解析为 a NUMBER,则该值n不能为负。SQRT返回一个实数。

  • 如果n解析为二进制浮点数(BINARY_FLOAT或BINARY_DOUBLE):

  • 如果n>= 0,则结果为正。

  • 如果n= -0,则结果为 -0。

  • 如果n< 0,则结果为NaN。

例子:

以下示例返回 26 的平方根:

SELECT SQRT(26) "Square root" FROM DUAL;

+-------------+
| Square root |
+=============+
| 5.09901951  |
+-------------+

8.316. STATEMENT_TIMESTAMP

用法:

功能:

STATEMENT_TIMESTAMP返回当前的日期和时间。返回类型为timestamp with time zone。

例子:

以下示例返回当前的日期和时间:

SELECT STATEMENT_TIMESTAMP();

STATEMENT_TIMESTAMP

2022-06-28 16:02:08.521282+00

8.317. STDDEV

用法:

也可以看看:“分析函数” 获取有关语法、语义和限制的信息

目的:STDDEV返回一组数字expr的样本标准差。这是一组数字,您可以将其用作聚合函数和分析函数。它与STDDEV_SAMP的不同之处在于,当只有一行输入时STDDEV返回零,而STDDEV_SAMP返回null不同。

KingBase数据库将标准差计算为为聚合函数VARIANCE定义的方差的平方根。

此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。该函数返回与参数的数值数据类型相同的数据类型。

如果您指定DISTINCT,那么您只能指定analytic_clause字句的query_partition_clause字句。不允许使用order_by_clause字句和windowing_clause字句。

也可以看看:

“聚合函数”、VARIANCE和STDDEV_SAMP

“关于 SQL 表达式”以获取有关有效形式的信息expr

聚合示例

以下示例返回样本hr.employees表中薪水的标准差:

SELECT STDDEV(salary) "Deviation" FROM employees;

Deviation

3909.36575

分析示例

以下示例中的查询返回样本表中 Department 80 工资的累积标准差,按以下hr.employees顺序排序hire_date:

SELECT last_name, salary, STDDEV(salary) OVER (ORDER BY hire_date) "StdDev" FROM employees WHERE department_id = 30 ORDER BY last_name, salary, "StdDev";

LAST_NAME

SALARY

StdDev

Baida

2900

4035.26125

Clomenares

2500

3362.58829

Himuro

2600

3649.2465

Khoo

3100

5586.14357

Raphaely

11000

0

Tobias

2800

4650.0896

8.318. STDDEV_POP

用法:

也可以看看:“分析函数”获取有关语法、语义和限制的信息

目的:STDDEV_POP计算总体标准差并返回总体方差的平方根。您可以将其用作聚合函数和分析函数。

此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。该函数返回与参数的数值数据类型相同的数据类型。

该函数与函数的平方根相同VAR_POP。当VAR_POP返回 null 时,此函数返回 null。

也可以看看:

“聚合函数”和VAR_POP

“关于 SQL 表达式”以获取有关有效形式的信息expr

聚合示例

以下示例返回样本表中销售额的总体和样本标准差sh.sales:

SELECT STDDEV_POP(amount_sold) "Pop", STDDEV_SAMP(amount_sold) "Samp" FROM sales;

Pop

Samp

896.355151

896.355592

分析示例

以下示例hr.employees按部门返回样本表中薪金的总体标准差:

SELECT department_id, last_name, salary, STDDEV_POP(salary) OVER (PARTITION BY department_id) AS pop_std FROM employees ORDER BY department_id, last_name, salary, pop_std;

DEPARTMENT_ID

LAST_NAME

SALARY

POP_STD

10

Whalen

4400

0

20

Fay

6000

3500

20

Hartstein

13000

3500

30

Baida

2900

3069.6091

100

Urman

7800

1644.18166

110

Gietz

8300

1850

110

Higgins

12000

1850

Grant

7000

0

8.319. STDDEV_SAMP

用法:

也可以看看:“分析函数” 获取有关语法、语义和限制的信息 

目的:STDDEV_SAMP计算累积样本标准差并返回样本方差的平方根。您可以将其用作聚合函数和分析函数。

此函数将任何数值数据类型或任何可以隐式转换为数值数据类型的非数值数据类型作为参数。该函数返回与参数的数值数据类型相同的数据类型。

该函数与函数的平方根相同VAR_SAMP。当VAR_SAMP返回 null 时,此函数返回 null。

也可以看看:

“聚合函数”和VAR_SAMP

“关于 SQL 表达式”以获取有关有效形式的信息expr

聚合示例

请参阅STDDEV_POP的聚合示例。

分析示例

以下示例employees按部门返回表中薪水的样本标准差:

SELECT department_id, last_name, hire_date, salary, STDDEV_SAMP(salary) OVER (PARTITION BY department_id ORDER BY hire_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cum_sdev FROM employees ORDER BY department_id, last_name, hire_date, salary, cum_sdev;

DEPARTMENT_ID

LAST_NAME

HIRE_DATE

SALARY

CUM_SDEV

10

Whalen

17-SEP-03

4400

20

Fay

17-AUG-05

6000

4949.74747

20

Hartstein

17-FEB-04

13000

30

Baida

24-DEC-05

2900

4035.26125

30

Colmenares

10-AUG-07

2500

3362.58829

30

Himuro

15-NOV-06

2600

3649.2465

30

Khoo

18-MAY-03

3100

5586.14357

30

Raphaely

07-DEC-02

11000

100

Greenberg

17-AUG-02

12008

2126.9772

100

Popp

07-DEC-07

6900

1804.13155

100

Sciarra

30-SEP-05

7700

1929.76233

100

Urman

07-MAR-06

7800

1788.92504

110

Gietz

07-JUN-02

8300

2621.95194

110

Higgins

07-JUN-02

12008

Grant

24-MAY-07

7000

8.320. STR_TO_DATE

功能:

把字符串按照指定格式转换成时间戳。返回类型为timestamp without time zone。

例子:

以下示例返回当前的日期和时间:

select str_to_date('2022-03-14 13:14:15','yyyy-MM-dd hh24:mi:ss') from dual;

  str_to_date
------------------
2022-03-14 13:14:15

8.321. STR_VALID

用法:

str_valid(`expr1 text, expr2 oid)

功能:

STR_VALID判断所给定的表达式是否为正确的日期时间。

参数列表有两个参数,第一个参数需要输入text类型字符串,第二个参数输入时间类型OID。

例子:

以下示例判断所给定的表达式是否为正确的日期时间:

SELECT STR_VALID('1981-10-19AD', CAST('DATE' AS REGTYPE));

+-----------+
| STR_VALID |
+===========+
| t         |
+-----------+

8.322. STRING_AGG

用法:

string_agg(expr1, delimiter)

输入参数:

expr1:用于聚集的表达式,通常为列表达式。类型为text或者bytea. delimiter: 聚集表达式中间的分隔符。

输出:

聚集后的expr1表达式。类型与expr1类型相同。

功能:

非空输入连接成一个串,用delimiter分隔,。

例子:

SELECT string_agg(a,',') FROM (values('aaaa'),('bbbb'),('cccc')) g(a);
string_agg
----------------
aaaa,bbbb,cccc
(1 row)

8.323. STRING_TO_ARRAY

用法:

STRING_TO_ARRAY(expr1,delimiter [,null_expr])

输入参数:

expr1:用于组成数组元素的表达式,通常为列表达式。或者常量表达式. delimiter: expr1中的各数组元素的分隔符。 null_expr: expr1中的null元素等价符。

输出:

expr1转换后的数组。

功能:

使用提供的分隔符将和可选的空串字符划分成数组元素。

例子:

SELECT string_to_array('1,2,3,4,*,6', ',', '*');
string_to_array
------------------
{1,2,3,4,NULL,6}
(1 row)

8.324. STRIP

用法:

strip(tsvector)

功能:

STRIP返回删除位置和权重后的 tsvector 。返回类型为 tsvector。

例子:

以下示例返回删除位置和权重后的 tsvector :

SELECT STRIP('fat:2,4 cat:3 rat:5A'::tsvector);

+-------------------+
| STRIP             |
+===================+
| 'cat' 'fat' 'rat' |
+-------------------+

8.325. STRPOS

用法:

目的:函数返回字符串expr1中,第一次出现expr2字符串的起始位置。

SELECT STRPOS('abcdefgb','de');

strpos

4

8.326. SUBSTR

用法

substr:

目的:这些 SUBSTR 函数返回 的一部分 char,从字符开始 position,substring_length 字符长。 SUBSTR使用输入字符集定义的字符计算长度。SUBSTRB使用字节而不是字符。SUBSTRC使用 Unicode 完整字符。SUBSTR2使用 UCS2 代码点。SUBSTR4使用 UCS4 代码点。

  • 如果position为 0,则将其视为 1。

  • 如果position为正,则 KingBase 数据库从头开始计数char以查找第一个字符。

  • 如果position为负数,则 KingBase 从 末尾倒数char。

  • 如果substring_length省略,则 KingBase 将所有字符返回到char. 如果substring_length小于 1,则 KingBase 返回 null。

char可以是任何数据类型CHAR, VARCHAR, NCHAR, NVARCHAR, CLOB, 或NCLOB. 例外是SUBSTRC,SUBSTR2和SUBSTR4, 不允许char是CLOBor NCLOB。两者position和都substring_length必须是数据类型NUMBER,或者任何可以隐式转换为的数据类型NUMBER,并且必须解析为整数。返回值与 的数据类型相同char,除了CHAR参数返回一个VARCHAR值,而NCHAR参数NVARCHAR返回一个值。作为参数传递的浮点数SUBSTR会自动转换为整数。

例子:以下示例返回“ABCDEFG”的几个指定子字符串:

SELECT SUBSTR('ABCDEFG',3,4) "Substring" FROM DUAL;

Substring

CDEF

SELECT SUBSTR('ABCDEFG',-5,4) "Substring" FROM DUAL;

Substring

CDEF

Assume a double-byte database character set:

SELECT SUBSTRB('ABCDEFG',5,4.2) "Substring with bytes" FROM DUAL;

Substring with bytes

CD

8.327. SUBSTRB

用法:

功能: 这些SUBSTR函数返回 的一部分char,从字符开始position,substring_length字符长。SUBSTR使用输入字符集定义的字符计算长度。SUBSTRB使用字节而不是字符。SUBSTRC使用 Unicode 完整字符。SUBSTR2使用 UCS2 代码点。SUBSTR4使用 UCS4 代码点。

  • 如果position为 0,则将其视为 1。

  • 如果position为正,则 KingBase 数据库从头开始计数char以查找第一个字符。

  • 如果position为负数,则 KingBase 从 末尾倒数char。

  • 如果substring_length省略,则 KingBase 将所有字符返回到char. 如果substring_length小于 1,则 KingBase 返回 null。

char可以是任何数据类型CHAR, VARCHAR, NCHAR, NVARCHAR, CLOB, 或NCLOB. 例外是SUBSTRC,SUBSTR2和SUBSTR4, 不允许char是CLOBor NCLOB。两者position和都substring_length必须是数据类型NUMBER,或者任何可以隐式转换为的数据类型NUMBER,并且必须解析为整数。返回值与

 

的数据类型相同char,除了CHAR参数返回一个VARCHAR值,而NCHAR参数NVARCHAR返回一个值。作为参数传递的浮点数SUBSTR会自动转换为整数。

例子: 以下示例返回“ABCDEFG”的几个指定子字符串:

SELECT SUBSTRB('ABCDEFG',3,4) "Substring" FROM DUAL;

Substring

CDEF

SELECT SUBSTRB('ABCDEFG',-5,4) "Substring" FROM DUAL;

Substring

CDEF

8.328. SUBSTRING

用法:

substring(string [from int]  [for int])

功能:

这些SUBSTR函数返回 的一部分char,从字符开始position,substring_length字符长。SUBSTR使用输入字符集定义的字符计算长度。SUBSTRB使用字节而不是字符。SUBSTRC使用 Unicode 完整字符。SUBSTR2使用 UCS2 代码点。SUBSTR4使用 UCS4 代码点。

  • 如果position为 0,则将其视为 1。

  • 如果position为正,则 KingBase 数据库从头开始计数char以查找第一个字符。

  • 如果position为负数,则 KingBase 从 末尾倒数char。

  • 如果substring_length省略,则 KingBase 将所有字符返回到char. 如果substring_length小于 1,则 KingBase 返回 null。

char可以是任何数据类型CHAR, VARCHAR, NCHAR, NVARCHAR, CLOB, 或NCLOB. 例外是SUBSTRC,SUBSTR2和SUBSTR4, 不允许char是CLOBor NCLOB。两者position和都substring_length必须是数据类型NUMBER,或者任何可以隐式转换为的数据类型NUMBER,并且必须解析为整数。返回值与

的数据类型相同char,除了CHAR参数返回一个VARCHAR值,而NCHAR参数NVARCHAR返回一个值。作为参数传递的浮点数SUBSTR会自动转换为整数。

例子:

以下示例返回“ABCDEFG”的几个指定子字符串:

SELECT SUBSTRING('ABCDEFG',3,4) "Substring" FROM DUAL;

+-----------+
| Substring |
+===========+
| CDEF      |
+-----------+

SELECT SUBSTRING('ABCDEFG',-5,4) "Substring" FROM DUAL;

+-----------+
| Substring |
+===========+
| CDEF      |
+-----------+

8.329. SUM

用法:

sum(expression)

功能:

SUM返回非空输入值的和。

也可以看看:

  • 如果输入值为smallint类型或者integer类型时,返回类型为bigint。

  • 如果输入值为bigint类型或者numeric类型时,返回类型为numeric。

  • 如果输入值类型为real、double precision、interval或money时,返回类型与输入类型相同。

例子:

以下示例返回非空输入值的和:

SELECT x, SUM(y) FROM test1 GROUP BY x HAVING sum(y) > 3;

+---+-----+
| x | SUM |
+===+=====+
| a | 4   |
+---+-----+
| b | 5   |
+---+-----+

8.330. SYS_BACKEND_PID

用法:

sys_backend_pid()

功能:

SYS_BACKEND_PID返回附加到当前会话的服务器进程的进程ID。

例子:

以下示例返回附加到当前会话的服务器进程的进程ID:

SELECT SYS_BACKEND_PID();

+-----------------+
| SYS_BACKEND_PID |
+=================+
| 178263          |
+-----------------+

8.331. SYS_CANCEL_BACKEND

用法:

sys_cancel_backend(pid int)

功能:

SYS_CANCEL_BACKEND用于取消对具有指定进程ID的后端进程的会话的当前查询。

也可以看看:

  • 如果调用的用户是其后端正在被取消的角色的成员,或者调用的角色已被授予SYS_SIGNAL_BACKEND,则也允许操作。

  • 只有超级用户可以取消超级用户的后端。

例子:

以下示例取消对具有指定进程ID的后端进程的会话的当前查询:

SELECT SYS_CANCEL_BACKEND(458343);

+--------------------+
| SYS_CANCEL_BACKEND |
+====================+
| t                  |
+--------------------+

8.332. SYS_COLUMN_SIZE

用法:

sys_column_size(any)

功能:

SYS_COLUMN_SIZE返回用于存储任何单个数据值的字节数。

如果直接应用于表的列值,则将反映所做的任何压缩。

例子:

以下示例返回用于存储任何单个数据值的字节数:

SELECT SYS_COLUMN_SIZE('abc');

+-----------------+
| SYS_COLUMN_SIZE |
+=================+
| 4               |
+-----------------+

8.333. SYS_CONTEXT

用法:

sys_context(namespace text, parameter text, length int default 256)

输入参数:

Namespace:已创建的 namespace,不区分大小写,如果不存在,则返回空。 Parameter:namespace 中的属性,不区分大小写,如果不存在,则报错;最大长度 30bytes。 Length: length 为 INT 类型,最大值为 4000,即返回字符串最大长度为 4000 字节;如果指定的 length 值非法,则忽略该值,而使用默认值 256。

输出:

函数返回值类型为 varchar(256),如果返回值超过 256 字节,则需要设置 length。

功能:

SYS_CONTEXT返回当前时刻与上下文命名空间相关联的parameter的值。可以在SQL和PL/SQL语句中使用该函数。SYS_CONTEXT必须在本地执行。

例子:

SELECT SYS_CONTEXT ('USERENV', 'CURRENT_SCHEMA') FROM DUAL;
sys_context
-------------
public
(1 row)

8.334. SYS_DATABASE_SIZE

用法:

sys_database_size({oid|name})

功能:

SYS_DATABASE_SIZE返回指定名称或OID的数据库使用的总磁盘空间。返回类型为bigint。

要使用此功能,您必须对指定的数据库有连接权限,或者您是sys_read_all_stats角色的成员。

输入值可以是数据库名,也可以是数据库的OID。

例子:

以下示例返回用于存储任何单个数据值的字节数:

SELECT SYS_DATABASE_SIZE('test');

+-------------------+
| SYS_DATABASE_SIZE |
+===================+
| 13004643          |
+-------------------+

SELECT SYS_DATABASE_SIZE(16173);

+-------------------+
| SYS_DATABASE_SIZE |
+===================+
| 13004643          |
+-------------------+

8.335. SYS_STAT_FILE

用法:

sys_stat_file(filename text[, ``missing_ok`` boolean])

功能:

返回关于一个文件/目录的统计信息。默认仅限于超级用户使用,但是可以给其他用户授予EXECUTE让他们运行这个函数。

例子:

 SELECT * from sys_stat_file('base',true);
 SIZE |         ACCESS         |      MODIFICATION      |         CHANGE         | CREATION | ISDIR
------+------------------------+------------------------+------------------------+----------+-------
  131 | 2022-06-27 14:14:02+08 | 2022-06-17 20:39:48+08 | 2022-06-17 20:39:48+08 |          | t
 (1 row)

8.336. SYS_READ_BINARY_FILE

用法:

sys_read_binary_file(filename text [, ``offset`` bigint, ``length`` bigint [, ``missing_ok`` boolean] ])

功能:

返回一个二进文件的内容。默认仅限于超级用户使用,但是可以给其他用户授予EXECUTE让他们运行这个函数。

例子:

SELECT sys_read_binary_file('11.bin');
SELECT sys_read_binary_file('11.bin',0,1024,true);

8.337. SYS_READ_FILE

用法:

sys_read_file(filename text [, ``offset`` bigint, ``length`` bigint [, ``missing_ok`` boolean] ])

功能:

返回一个文件的内容。默认仅限于超级用户使用,但是可以给其他用户授予EXECUTE让他们运行这个函数。

例子:

SELECT sys_read_binary_file('11.txt');
SELECT sys_read_binary_file('11.txt',10,1024,true);

8.338. SYS_TERMINATE_BACKEND

用法:

sys_terminate_backend(pid int)

功能:

中止一个后端。如果调用角色是被取消后端的拥有者角色的成员或者调用角色已经被授予 sys_signal_backend,这也是允许的,不过只有超级用户才能取消超级用户的后端。

例子:

 SELECT sys_terminate_backend(134245);
 SYS_TERMINATE_BACKEND
-----------------------
 t
(1 row)

8.339. SYS_TOTAL_RELATION_SIZE

用法:

sys_total_relation_size (oid bigint)

功能:

指定表所用的总磁盘空间,包括所有的索引和TOAST数据

例子:

 SELECT sys_total_relation_size (1259);
 SYS_TOTAL_RELATION_SIZE
-------------------------
          442368
(1 row)

8.340. SYS_FUNCTION_IS_VISIBLE

用法:

sys_function_is_visible(function_oid)

功能:

判断函数在搜索路径中是否可见。

例子:

\set SQLTERM /
CREATE OR REPLACE FUNCTION increment(i INTEGER)
RETURNS INTEGER AS
BEGIN
    RETURN i + 1;
END;
/
\set SQLTERM ;
select oid from sys_proc where proname = 'increment';
oid
-------
46531
(1 row)
SELECT sys_function_is_visible(46531);
sys_function_is_visible
-------------------------
t
(1 row)

8.341. SYS_GET_CONSTRAINTDEF

用法:

sys_get_constraintdef(constraint_oid)
sys_get_constraintdef(constraint_oid, pretty_bool)

功能:

获得对应约束的定义。pretty_bool为真则为优质打印方式。

例子:

create table products (
    product_no integer,
    name text,
    price numeric constraint positive_price check (price > 0)
    );
select oid from sys_constraint where conname = 'psitive_price';
oid
-------
247537
(1 row)
SELECT sys_get_constraintdef(247537);
sys_get_constraintdef
--------------------------------
 CHECK ((price > (0)::numeric))
(1 row)
SELECT sys_get_constraintdef(247537, false);
sys_get_constraintdef
--------------------------------
 CHECK ((price > (0)::numeric))
(1 row)

8.342. SYS_GET_EXPR

用法:

sys_get_expr(sys_node_tree, relation_oid)
sys_get_expr(sys_node_tree, relation_oid, pretty_bool)

功能:

反编译一个表达式的内部形式,假定其中的任何 Var 指向由第二个参数指示的关系。pretty_bool为真则为优质打印方式。

例子:

select oid from sys_attrdef limit 1;

 .. code::

   oid
  -------
   16485
  (1 row)

  .. code::

\set SQLTERM /
  declare
      r record;
      a text;
  begin
      select * into r from sys_attrdef where oid = 16485;
      a = sys_get_expr(r.adbin, r.adrelid);
      RAISE NOTICE 'a = %', a;
  end;

.. code::

  NOTICE:  a = nextval('mytest_id_seq'::regclass)

 .. code::

\set SQLTERM /
  declare
      r record;
      a text;
  begin
      select * into r from sys_attrdef where oid = 16485;
      a = sys_get_expr(r.adbin, r.adrelid, true);
      RAISE NOTICE 'a = %', a;
  end;

 .. code::

  NOTICE:  a = nextval('mytest_id_seq'::regclass)

8.343. SYS_GET_FUNCTION_ARGUMENTS

用法:

sys_get_function_arguments(func_oid)

功能:

获得一个函数或过程定义的参数列表(带有默认值)。

例子:

\set SQLTERM /
CREATE OR REPLACE FUNCTION increment(i INTEGER)
RETURNS INTEGER AS
BEGIN
    RETURN i + 1;
END;
/
\set SQLTERM ;
select oid from sys_proc where proname = 'increment';
oid
-------
46531
(1 row)
SELECT sys_get_function_arguments(46531);
 sys_get_function_arguments
----------------------------
 i integer
(1 row)

8.344. SYS_GET_FUNCTION_IDENTITY_ARGUMENTS

用法:

sys_get_function_identity_arguments (func_oid)

功能:

获得标识一个函数或过程的参数列表(不带默认值)。

例子:

\set SQLTERM /
CREATE OR REPLACE FUNCTION increment(i INTEGER)
RETURNS INTEGER AS
BEGIN
    RETURN i + 1;
END;
/
\set SQLTERM ;
select oid from sys_proc where proname = 'increment';
oid
-------
46531
(1 row)
SELECT sys_get_function_identity_arguments (46531);
sys_get_function_identity_arguments
-------------------------------------
 i integer
(1 row)

8.345. SYS_GET_FUNCTION_RESULT

用法:

sys_get_function_result(func_oid)

功能:

获得函数的RETURNS 子句(对过程返回空)。

例子:

\set SQLTERM /
CREATE OR REPLACE FUNCTION increment(i INTEGER)
RETURNS INTEGER AS
BEGIN
    RETURN i + 1;
END;
/
\set SQLTERM ;
select oid from sys_proc where proname = 'increment';
oid
-------
46531
(1 row)
SELECT sys_get_function_result(46531);
 sys_get_function_result
-------------------------
 integer
(1 row)

8.346. SYS_GET_FUNCTIONDEF

用法:

sys_get_functiondef(func_oid)

功能:

获得一个函数或过程的定义。

例子:

\set SQLTERM /
CREATE OR REPLACE FUNCTION increment(i INTEGER)
RETURNS INTEGER AS
BEGIN
    RETURN i + 1;
END;
/
\set SQLTERM ;
select oid from sys_proc where proname = 'increment';
oid
-------
46531
(1 row)
SELECT sys_get_functiondef(46531);
                  sys_get_functiondef
--------------------------------------------------------
 CREATE OR REPLACE FUNCTION public.increment(i integer)+
  RETURNS integer                                      +
 AS                                                    +
 BEGIN                                                 +
     RETURN i + 1;                                     +
 END                                                   +

(1 row)

8.347. SYS_GET_INDEXDEF

用法:

sys_get_indexdef(index_oid)
sys_get_indexdef(index_oid, column_no, pretty_bool)

功能:

根据参数不同。

  • 获得索引的CREATE INDEX命令。

  • 获得索引的CREATE INDEX命令,或者当 column_no 为非零时,只得到一个索引列的定义。

例子:

create table films(
   id int,
   title text
   );
  CREATE UNIQUE INDEX title_idx ON films (title);
  select oid from sys_class where relname = 'title_idx';
  oid
--------
 247564
(1 row)
SELECT sys_get_indexdef(247564);
                         sys_get_indexdef
-------------------------------------------------------------------
 CREATE UNIQUE INDEX title_idx ON public.films USING btree (title)
(1 row)

.. code::

SELECT sys_get_indexdef(247564, 0, true);
                         sys_get_indexdef
-------------------------------------------------------------------
 CREATE UNIQUE INDEX title_idx ON public.films USING btree (title)
(1 row)

8.348. SYS_GET_KEYWORDS

用法:

sys_get_keywords()

功能:

获得 SQL 关键字的列表及其分类。

例子: 以下示例为查询SQL 关键字的列表及其分类。

select sys_get_keywords();
                       sys_get_keywords
------------------------------------------------------------------
 (abort,U,unreserved)
 (absolute,U,unreserved)
 (access,U,unreserved)
 (account,U,unreserved)
 (action,U,unreserved)
 (add,U,unreserved)
 ... ...
(569 rows)

8.349. SYS_GET_OBJECT_ADDRESS

用法:

sys_get_object_address(type text, name text[], args text[])

功能:

从一个数据库对象的内部表示得到它的地址。

sys_get_object_address返回一行,其中包含有足以唯一 标识由类型、对象名和参数数组指定的数据库对象的信息。返回值可以被用在诸如 sys_depend等系统目录中并且可以被传递给 sys_identify_objectsys_describe_object等其他 系统函数。``class_id``是包含该对象的系统目录 OID; ``objid``是对象本身的 OID,而 ``objsubid``是子对象 ID,如果没有则为零。这个函数是 sys_identify_object_as_address的逆函数。

例子:

以下示例为查找func_test函数的内部地址。

\set SQLTERM /
create function func_test(i int) return int as
begin
    raise notice 'in func';
    return 1;
end;
/
\set SQLTERM ;
select sys_get_object_address('function','{public,func_test}','{int}');
 sys_get_object_address
-----------------------
 (1255,41016,0)
(1 row)

8.350. SYS_GET_RULEDEF

用法:

sys_get_ruledef(rule_oid)
sys_get_ruledef(rule_oid, pretty_bool)

功能:

重建规则的创建命令。

例子:

以下示例为重建"_RETURN"规则。

\set SQLTERM ;
create table t1 (i int);
insert into t1 values(10);
create table t2 (i int);

CREATE RULE "_RETURN" AS
    ON SELECT TO t2
    DO INSTEAD
        SELECT * FROM t1;

select sys_get_ruledef((select oid from sys_rewrite where rulename = '_return' and ev_class= (select oid from sys_class where relname='t2')));

                  sys_get_ruledef
----------------------------------------------------
 CREATE RULE _return AS                            +
     ON SELECT TO public.t2 DO INSTEAD  SELECT t1.i+
    FROM t1;
(1 row)


select sys_get_ruledef((select oid from sys_rewrite where rulename = '_return' and ev_class= (select oid from sys_class where relname='t2')), true);

                   sys_get_ruledef
---------------------------------------------
 CREATE RULE _return AS                     +
     ON SELECT TO t2 DO INSTEAD  SELECT t1.i+
    FROM t1;
(1 row)

select sys_get_ruledef((select oid from sys_rewrite where rulename = '_return' and ev_class= (select oid from sys_class where relname='t2')), false);

                  sys_get_ruledef
----------------------------------------------------
 CREATE RULE _return AS                            +
     ON SELECT TO public.t2 DO INSTEAD  SELECT t1.i+
    FROM t1;
(1 row)

8.351. SYS_GET_SERIAL_SEQUENCE

用法:

sys_get_serial_sequence(table_name, column_name)

功能:

获得一个序列列或标识列使用的序列的名称。

sys_get_serial_sequence返回与一个列相关联的序列的名称,如果与列相关联的序列则返回 NULL。如果该列是一个标识列,相关联的序列是为该标识列内部创建的序列。 对于使用序列类型之一(serialsmallserialbigserial)创建的列,它是为那个序列列定义创建的序列。 在后一种情况中,这种关联可以用ALTER SEQUENCE OWNED BY修改或者移除(该函数可能应该已经被sys_get_owned_sequence调用,它当前的名称反映了它通常被serialbigserial列使用)。 第一个输入参数是一个带可选模式的表名,第二个参数是一个列名。因为第一个参数可能是一个模式和表,它不能按照一个双引号包围的标识符来对待,意味着它默认情况下是小写的。 而第二个参数只是一个列名,将被当作一个双引号包围的来处理并且会保留其大小写。函数返回的值会被适当地格式化以便传递给序列函数(参见 序列操作函数 )。 一种典型的用法是为标识列或者序列列读取当前值,例如:

例子: 一种典型的用法是为标识列或者序列列读取当前值。

\set SQLTERM ;
CREATE TABLE serialTest1 (f1 text, f2 serial);

INSERT INTO serialTest1 VALUES ('foo');
INSERT INTO serialTest1 VALUES ('bar');
INSERT INTO serialTest1 VALUES ('force', 100);

SELECT * FROM serialTest1;

SELECT currval(sys_get_serial_sequence('serialTest1', 'f2'));

 currval
---------
       2
(1 row)


SELECT sys_get_serial_sequence('serialTest1', 'f2');

  sys_get_serial_sequence
---------------------------
 public.serialtest1_f2_seq
(1 row)

8.352. SYS_GET_STATISTICSOBJDEF

用法:

sys_get_statisticsobjdef(statobj_oid)

功能:

重建一个扩展统计对象的创建命令(CREATE STATISTICS命令)。

例子:

以下示例为重建扩展统计对象命令。

\set SQLTERM ;
CREATE TABLE ab1 (a INTEGER, b INTEGER, c INTEGER);
CREATE STATISTICS IF NOT EXISTS ab1_a_b_stats ON a, b FROM ab1;

CREATE SCHEMA regress_schema_2;
CREATE STATISTICS regress_schema_2.ab1_a_b_stats ON a, b FROM ab1;

SELECT sys_get_statisticsobjdef(oid) FROM sys_statistic_ext WHERE stxname = 'ab1_a_b_stats';

                      sys_get_statisticsobjdef
-------------------------------------------------------------------
 CREATE STATISTICS public.ab1_a_b_stats ON a, b FROM ab1
 CREATE STATISTICS regress_schema_2.ab1_a_b_stats ON a, b FROM ab1
(2 rows)

8.353. SYS_GET_TRIGGERDEF

用法:

sys_get_triggerdef(trigger_oid)
sys_get_triggerdef(trigger_oid, pretty_bool)

功能:

重建一个触发器 的CREATE [ CONSTRAINT ] TRIGGER命令。

pretty_bool为真时,会以简洁形式重建触发器,如触发器依赖表在当前模式下则不会重建触发器依赖表的模式名。

例子: 以下示例为重建触发器命令。

\set SQLTERM ;
CREATE TABLE test_table(a INT, b INT, c INT, d INT);
CREATE TABLE test_result(name VARCHAR(10), c INT);
\set SQLTERM /
CREATE OR REPLACE TRIGGER tri_test_1 AFTER UPDATE OF c ON test_table
FOR EACH ROW AS
BEGIN
    INSERT INTO test_result VALUES('t1:new.c', :new.c);
END
/
\set SQLTERM ;
SELECT sys_get_triggerdef(oid) from sys_trigger where tgname = 'tri_test_1';

                                   sys_get_triggerdef
-------------------------------------------------------------------------------------------
 CREATE OR REPLACE TRIGGER tri_test_1 AFTER UPDATE OF c ON public.test_table FOR EACH ROW +
 BEGIN                                                                                    +
     INSERT INTO test_result VALUES('t1:new.c', :new.c);                                  +
 END                                                                                      +

(1 row)


SELECT sys_get_triggerdef(oid, true) from sys_trigger where tgname = 'tri_test_1';

                                 sys_get_triggerdef
------------------------------------------------------------------------------------
 CREATE OR REPLACE TRIGGER tri_test_1 AFTER UPDATE OF c ON test_table FOR EACH ROW +
 BEGIN                                                                             +
     INSERT INTO test_result VALUES('t1:new.c', :new.c);                           +
 END                                                                               +

(1 row)

SELECT sys_get_triggerdef(oid, false) from sys_trigger where tgname = 'tri_test_1';

                                    sys_get_triggerdef
-------------------------------------------------------------------------------------------
 CREATE OR REPLACE TRIGGER tri_test_1 AFTER UPDATE OF c ON public.test_table FOR EACH ROW +
 BEGIN                                                                                    +
     INSERT INTO test_result VALUES('t1:new.c', :new.c);                                  +
 END                                                                                      +

(1 row)

8.354. SYS_GET_USERBYID

用法:

sys_get_userbyid(role_oid)

功能:

获得给定 OID 指定的角色名。

例子: 以下示例为重建触发器命令。

\set SQLTERM ;
select sys_get_userbyid(9);
sys_get_userbyid
------------------
sao
(1 row)

8.355. SYS_GET_VIEWDEF

用法:

sys_get_viewdef(view_name)
sys_get_viewdef(view_name, pretty_bool)
sys_get_viewdef(view_oid)
sys_get_viewdef(view_oid, pretty_bool)
sys_get_viewdef(view_oid, wrap_column_int)

功能:

sys_get_viewdef重构定义一个视图的SELECT查询。

前两种用法为通过视图名或物化视图名重建视图命令,后三种用法为通过视图oid或物化视图oid重建视图命令。

这些函数的大部分都有两种变体,一种可以可选地“优质打印”结果。 优质打印的格式可读性更强,但是默认格式更可能被未来版本的KingbaseES以相同的方式解释。 在转出目的中避免使用优质打印输出。为pretty_bool参数传递 false 将得到和不带该参数的变体相同的结果。

wrap_column_int为指定长度的列宽,并隐含了优质打印。

例子: 以下示例为重建触发器命令。

\set SQLTERM ;
create table t1(i int, j text);
create view v1 as select * from t1;
select sys_get_viewdef('v1'::regclass);

 sys_get_viewdef
----------------
  SELECT t1.i, +
     t1.j      +
    FROM t1;
(1 row)

8.356. SYS_GUID

用法:

sys_guid()

功能:

SYS_GUID生成并返回一个RAW由 16 个字节组成的全局唯一标识符(值)。在大多数平台上,生成的标识符由主机标识符、调用函数的进程或线程的进程或线程标识符以及该进程或线程的非重复值(字节序列)组成。

例子:

以下示例将一列添加到示例表中hr.locations,将唯一标识符插入每一行,并返回RAW全局唯一标识符的 16 字节值的 32 个字符的十六进制表示:

ALTER TABLE locations ADD (uid_col RAW(16));

UPDATE locations SET uid_col = SYS_GUID();

SELECT location_id, uid_col FROM locations ORDER BY location_id, uid_col;

+-------------+----------------------------------+
| LOCATION_ID | UID_COL                          |
+=============+==================================+
| 1000        | 09F686761827CF8AE040578CB20B7491 |
+-------------+----------------------------------+
| 1100        | 09F686761828CF8AE040578CB20B7491 |
+-------------+----------------------------------+
| 1200        | 09F686761829CF8AE040578CB20B7491 |
+-------------+----------------------------------+
| 1300        | 09F68676182ACF8AE040578CB20B7491 |
+-------------+----------------------------------+
| 1400        | 09F68676182BCF8AE040578CB20B7491 |
+-------------+----------------------------------+
| 1500        | 09F68676182CCF8AE040578CB20B7491 |
+-------------+----------------------------------+
| . . .       |                                  |
+-------------+----------------------------------+

8.357. SYS_HAS_ROLE

用法:

sys_has_role(user, role, privilege)
sys_has_role(role, privilege)

功能:

检查 user 用户(未指定时使用当前用户)是否能以特定的方式访问一个角色。其参数的可能性类同于has_table_privilege。除了public不允许作为一个用户名。希望的访问权限类型必须是下列值的某种组合:MEMBERUSAGEMEMBER表示该角色中的直接或间接成员关系(即使用SET ROLE的权力),而USAGE表示不做SET ROLE的情况下该角色的权限是否立即可用。

例子:

select sys_has_role('system', 'usage');

+--------------+
| sys_has_role |
+==============+
| t            |
+--------------+

8.358. SYS_IDENTIFY_OBJECT

用法:

sys_identify_object(catalog_id oid, object_id oid, object_sub_id integer)

功能:

返回一行数据,包含由参数目录OID、对象OID和一个(可能为零的)子对象ID所唯一标识的数据库对象的信息。该信息是供机器读取的,并且不会被翻译。type标识数据库对象的类型;schema是该对象所属的模式名,如果对象类型不属于模式则为NULL;,如果需要的话,可以加上引号如果该名称(如果相关的话,还可以加上模式名)足以唯一标识该对象,则name就是对象的名称,必要时会被加上引号,否则为NULL;identity是完整的兑现标识,它会表现为与对象类型相关的精确格式,并且如有必要,该格式中的每个部分都会被模式限定。

例子:

select * from sys_identify_object(1259, 14886, 0);

+------+-------------+-----------+-----------------------+
| type |   schema    |   name    |       identity        |
+======+=============+===========+=======================+
| view | sys_catalog | sys_class | sys_catalog.sys_class |
+------+-------------+-----------+-----------------------+

8.359. SYS_IDENTIFY_OBJECT_AS_ADDRESS

用法:

sys_identify_object_as_address(catalog_id oid, object_id oid, object_sub_id integer)

功能:

返回一行数据,包含由参数目录OID、对象OID和一个(可能为零的)子对象ID所唯一标识的数据库对象的信息。返回的信息独立于当前服务器,也就是说,它可以被用来在另一个服务器中标识一个具有相同命名的对象。type标识数据库对象的类型;object_namesobject_args是文本数组,它们一起构成了对对象的引用。这三个值可以被传递给sys_get_object_address以获得该对象的内部地址。这个函数是sys_get_object_address的逆函数。

例子:

select * from sys_identify_object_as_address(1259, 14886, 0);

+------+-------------------------+-------------+
| type |      object_names       | object_args |
+======+=========================+=============+
| view | {sys_catalog,sys_class} | {}          |
+------+-------------------------+-------------+

8.360. SYS_INDEXES_SIZE

用法:

sys_indexes_size(regclass)

功能:

接受一个表的 OID 或名称,并返回附加到该表的所有索引所使用的全部磁盘空间。

例子:

以下示例返回表的所有索引所使用的全部磁盘空间:

SELECT sys_indexes_size('test');

+-----------------+
| sys_indexes_size |
+=================+
| 16384           |
+-----------------+

SELECT sys_indexes_size('24878');

+-----------------+
| sys_indexes_size |
+=================+
| 16384           |
+-----------------+

8.361. SYS_KINGBASE_START_TIME

用法:

sys_kingbase_start_time()

功能:

返回服务器启动时的timestamp with time zone

例子:

select sys_kingbase_start_time();

+-------------------------------+
|    sys_kingbase_start_time    |
+===============================+
| 2022-06-28 14:03:47.041437+08 |
+-------------------------------+

8.362. SYS_LS_DIR

用法:

sys_ls_dir(dirname text [, missing_ok boolean, include_dot_dirs boolean])

功能:

系统函数,列出目录中的内容。默认仅限于超级用户使用,但是可以给其他用户授予Execute让他们运行这个函数。

例子:

SELECT SYS_LS_DIR('/', TRUE, TRUE);
+---------------+
| sys_ls_dir    |
|---------------|
| .             |
| ..            |
| boot          |
| dev           |
| proc          |
| run           |
| sys           |
| etc           |
| root          |
| var           |
| tmp           |
| usr           |
| bin           |
| sbin          |
| lib           |
| lib64         |
| home          |
| media         |
| mnt           |
| opt           |
| srv           |
| .readahead    |
| .bash_history |
| .autorelabel  |
+---------------+

8.363. SYS_LS_LOGDIR

用法:

sys_ls_logdir()

功能:

系统函数,列出日志目录中文件的名称、尺寸以及最后修改时间。访问被授予给sys_monitor 角色的成员,并且可以被授予给其他非超级用户角色。

例子:

SELECT SYS_LS_LOGDIR();
+---------------------------------------------------------------+
| sys_ls_logdir                                                 |
|---------------------------------------------------------------|
| (kingbase-2022-06-28_140347.log,562,"2022-06-28 16:15:28+08") |
+---------------------------------------------------------------+

8.364. SYS_LS_TMPDIR

用法:

sys_ls_tmpdir()

功能:

系统函数,为tablespace列出临时目录中文件的名称、大小和最后一次修改时间。 如果没有提 供tablespace,则在临时目录中的sys_default表空间被使用。sys_monitor角色的成员可以访问, 其他非超级用户角色也可以访问。

例子:

SELECT SYS_LS_TMPDIR();
+-----------------+
| sys_ls_tmpdir   |
|-----------------|
+-----------------+

8.365. SYS_LS_WALDIR

用法:

sys_ls_waldir()

功能:

系统函数,列出WAL目录中文件的名称、尺寸以及最后修改时间。访问被授予给sys_monitor角色 的成员,并且可以被授予给其他非超级用户角色。。

例子:

SELECT SYS_LS_WALDIR();
+--------------------------------------------------------------+
| sys_ls_waldir                                                |
|--------------------------------------------------------------|
| (000000010000000000000001,16777216,"2022-06-28 16:19:57+08") |
+--------------------------------------------------------------+

8.366. SYS_RELATION_FILENODE

用法:

sys_relation_filenode(relation regclass)

功能:

接受一个表、索引、序列或 TOAST 表的 OID 或名称,返回当前分配给它的“filenode”号。文件结点是关系的文件名的基本组件。对于大多数表结果和 sys_class.relfilenode 相同,但是对于某些系统目录 relfilenode 为零,并且必须使用此函数获取正确的值。如果传递一个没有存储的关系(如视图),此函数将返回 NULL。

例子:

以下示例返回表test的“filenode”号:

SELECT sys_relation_filenode(oid) FROM sys_class WHERE relname='test';

+-----------------------+
| sys_relation_filenode |
+=======================+
| 24878                 |
+-----------------------+

8.367. SYS_RELATION_FILEPATH

用法:

sys_relation_filepath(relation regclass)

功能:

返回关系的整个文件路径名(相对于数据库集簇的数据目录 KINGBASE_DATA)。

例子:

以下示例返回表test的文件路径名:

SELECT sys_relation_filepath(oid) FROM sys_class WHERE relname='test';

+-----------------------+
| sys_relation_filepath |
+=======================+
| base/16078/24878      |
+-----------------------+

8.368. SYS_RELATION_SIZE

用法:

sys_relation_size(relation regclass, fork text)
sys_relation_size(relation regclass)

功能:

接受一个表、索引或 TOAST 表的 OID 或者名称,并且返回那个关系的一个分叉所占的磁盘空间的字节尺寸。如果只得到一个参数,它会返回该关系的主数据分叉的尺寸。提供第二个参数 可以指定要检查哪个分叉('main'、'fsm'、'vm'或'init')使用的磁盘空间。

例子:

以下示例返回分叉'main'所占的磁盘空间的字节尺寸:

SELECT sys_relation_size('test','main');

+-------------------+
| sys_relation_size |
+===================+
| 16384             |
+-------------------+


SELECT sys_relation_size('test');

+-------------------+
| sys_relation_size |
+===================+
| 16384             |
+-------------------+

8.369. SYS_RELOAD_CONF

用法:

sys_reload_conf()

功能:

SYS_RELOAD_CONF给服务器发送一个SIGHUP信号,导致所有服务器进程重载配置文件,无参数。

例子:

以下示例会使服务进程重新加载配置文件:

SELECT sys_reload_conf();
 sys_reload_conf
----------------
 t
(1 row)

8.370. SYS_SIZE_BYTES

用法:

sys_size_bytes(text)

功能:

可以被用来从人类可读格式的字符串得到其中所表示的字节数。其输入可能带有的单位包括字节、kB、MB、GB 或者 TB,并且对输入进行解析时是区分大小写的。如果没有指定单位,会假定单位为字节。

例子:

以下示例返回表示的字节数:

SELECT size, sys_size_bytes(size) FROM (VALUES ('1'), ('123bytes'), ('1kB'), ('1MB'), (' 1 GB'), ('1.5 GB '),('1TB'), ('3000 TB'), ('1e6 MB')) x(size);

+----------+------------------+
| size     | sys_size_bytes   |
+==========+==================+
| 1        | 1                |
| 123bytes | 123              |
| 1kB      | 1024             |
| 1MB      | 1048576          |
| 1 GB     | 1073741824       |
| 1.5 GB   | 1610612736       |
| 1TB      | 1099511627776    |
| 3000 TB  | 3298534883328000 |
| 1e6 MB   | 1048576000000    |
+----------+------------------+

8.371. SYS_SIZE_PRETTY

用法:

sys_size_pretty(bigint)
sys_size_pretty(numeric)

功能:

可以用于把其它函数之一的结果格式化成一种人类易读的格式,可以根据情况使用字节、kB、MB、GB 或者 TB。

例子:

以下示例返回人类易读的格式:

SELECT sys_size_pretty(sys_relation_size('test'));

+-----------------+
| sys_size_pretty |
+=================+
| 16 kB           |
+-----------------+

SELECT sys_size_pretty(10::bigint);

+-----------------+
| sys_size_pretty |
+=================+
| 10 bytes        |
+-----------------+

8.372. SYS_SLEEP

用法:

sys_sleep(seconds)

功能:

SYS_SLEEP让服务进程延时执行,seconds是一个double precision类型的值。

例子:

以下示例会使服务进程延时3秒执行:

SELECT sys_sleep(3);
 sys_sleep
-----------

(1 row)

8.373. SYS_SLEEP_FOR

用法:

sys_sleep_for(interval)

功能:

SYS_SLEEP_FOR让服务进程延时执行,参数是一个interval,通常用于较长时间的休眠。

例子:

以下示例会使服务进程延时5分钟执行:

SELECT sys_sleep_for('5 minutes');
 sys_sleep_for
---------------

(1 row)

8.374. SYS_SLEEP_UNTIL

用法:

sys_sleep_until(timestamp with time zone)

功能:

SYS_SLEEP_UNTIL使程序休眠到一个指定的时间唤醒,参数是timestamp with time zone,通常用于较长时间的休眠。

例子:

以下示例会使服务进程直到明天三点后被唤醒:

SELECT sys_sleep_until('tomorrow 03:00');
 sys_sleep_until
-----------------

(1 row)

8.375. SYS_TABLE_IS_VISIBLE

用法:

 sys_table_is_visible(table_oid)


**功能:**

 表在搜索路径中是否可见,也可被用于视图、物化视图、索引、序列和外部表。

例子:

以下示例返回表在搜索路径中是否可见:

SELECT sys_table_is_visible(24878);

+----------------------+
| sys_table_is_visible |
+======================+
| t                    |
+----------------------+

8.376. SYS_TABLE_SIZE

用法:

sys_table_size(regclass)

功能:

接受一个表的 OID 或名称,并返回该表所需的磁盘空间,但是排除索引(TOAST 空间、空闲空间映射和可见性映射包含在内)。

例子:

以下示例返回该表所需的磁盘空间:

SELECT sys_table_size('test');

+----------------+
| sys_table_size |
+================+
| 5016616960     |
+----------------+

SELECT sys_table_size(24878);

+----------------+
| sys_table_size |
+================+
| 5016616960     |
+----------------+

8.377. SYS_TABLESPACE_DATABASES

用法:

sys_tablespace_databases(tablespace_oid)

功能:

系统函数,获得在该表空间中所有对象的数据库OID 的集合。

例子:

SELECT SYS_TABLESPACE_DATABASES(1663);
+----------------------------+
| sys_tablespace_databases   |
|----------------------------|
| 1                          |
| 16051                      |
| 16052                      |
| 16053                      |
+----------------------------+

8.378. SYS_TABLESPACE_LOCATION

用法:

sys_tablespace_location(tablespace_oid)

功能:

系统函数,获得在该表空间所在的文件系统的路径。

例子:

SELECT SYS_TABLESPACE_LOCATION(1663);

8.379. SYS_TABLESPACE_SIZE

用法:

sys_tablespace_size(tablespace_oid)

功能:

系统函数,获得指定OID的表空间使用的磁盘空间。

例子:

SELECT SYS_TABLESPACE_SIZE(1663);
+----------------------+
| sys_tablespace_size   |
|----------------------|
| 672388               |
+----------------------+

8.380. SYSDATE

用法:

SYSDATE()

输入参数:

输出:

返回当时服务器时间。

功能:

返回当时服务器时间。

例子:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值