华为云用户手册

  • 示例 示例一:SELECT语句,用一个游标读取一个表。 建立一个名为cursor1的游标: 1 CURSOR cursor1 FOR SELECT * FROM customer_address ORDER BY 1; 抓取头3行到游标cursor1里。 1 FETCH FORWARD 3 FROM cursor1; 示例二:VALUES子句,用一个游标读取VALUES子句中的内容。 建立一个名为cursor2的游标: 1 CURSOR cursor2 FOR VALUES(1,2),(0,3) ORDER BY 1; 抓取头2行到游标cursor2里: 1 FETCH FORWARD 2 FROM cursor2;
  • 功能描述 FETCH通过已创建的游标来检索数据。 每个游标都有一个供FETCH使用的关联位置。游标的关联位置可以在查询结果的第一行之前,或者在结果中的任意行,或者在结果的最后一行之后: 游标刚创建完之后,关联位置在第一行之前。 在抓取了一些移动行之后,关联位置在检索到的最后一行上。 如果FETCH抓取完了所有可用行,它就停在最后一行后面,或者在反向抓取的情况下是停在第一行前面。 FETCH ALL或FETCH BACKWARD ALL将总是把游标的关联位置放在最后一行或者在第一行前面。
  • 语法格式 设置所处的时区。 1 SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }; 设置所属的模式。 123 SET [ SESSION | LOCAL ] {CURRENT_SCHEMA { TO | = } { schema | DEFAULT } | SCHEMA 'schema'}; 设置客户端编码集。 1 SET [ SESSION | LOCAL ] NAMES encoding_name; 设置XML的解析方式。 1 SET [ SESSION | LOCAL ] XML OPTION { DOCUMENT | CONTENT }; 设置其他运行时参数。 123 SET [ LOCAL | SESSION ] { {config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }}};
  • 参数说明 SESSION 声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。 如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。 LOCAL 声明的参数只在当前事务中有效。在COMMIT或ROLLBACK之后,会话级别的设置将再次生效。 不论事务是否提交,此命令的影响只持续到当前事务结束。一个特例是:在一个事务里面,即有SET命令,又有SET LOCAL命令,且SET LOCAL在SET后面,则在事务结束之前,SET LOCAL命令会起作用,但事务提交之后,则是SET命令会生效。 TIME ZONE timezone 用于指定当前会话的本地时区。 取值范围:有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。 CURRENT_SCHEMA schema CURRENT_SCHEMA用于指定当前的模式。 取值范围:已存在模式名称。 SCHEMA schema 同CURRENT_SCHEMA。此处的schema是个字符串。 例如:set schema 'public'; NAMES encoding_name 用于设置客户端的字符编码。等价于set client_encoding to encoding_name。 取值范围:有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。 XML OPTION option 用于设置XML的解析方式。 取值范围:CONTENT(缺省)、DOCUMENT config_parameter 可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。 部分通过SHOW ALL查看的参数不能通过SET设置。如max_datanodes。 value config_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。
  • greatest(expr1 [, ...]) 描述:获取并返回参数列表中值最大的表达式的值。 ORA和TD兼容模式下,返回结果为所有非null参数的最大值。 MySQL兼容模式下,入参中存在null时,返回结果为null。 示例: 12345 SELECT greatest(1*2,2-3,4-1); greatest ---------- 3(1 row) 12345 SELECT greatest('ABC', 'BCD', 'CDE'); greatest ---------- CDE(1 row)
  • least(expr1 [, ...]) 描述:获取并返回参数列表中值最小的表达式的值。 ORA和TD兼容模式下,返回结果为所有非null参数的最小值。 MySQL兼容模式下,入参中存在null时,返回结果为null。 示例: 12345 SELECT least(1*2,2-3,4-1); least ------- -1(1 row) 12345 SELECT least('ABC','BCD','CDE'); least -------- ABC(1 row)
  • sys_context( 'namespace' , 'parameter') 描述:获取并返回指定namespace下参数parameter的值。 返回值类型:VARCHAR 示例: 12345 SELECT sys_context('USERENV', 'CURRENT_SCHEMA'); sys_context ------------- public(1 row) 根据当前所在的实际schema而变化。 目前仅支持SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA') 和SYS_CONTEXT('USERENV', 'CURRENT_USER')两种格式。
  • EMPTY_BLOB() 描述:使用EMPTY_BLOB在INSERT或UPDATE语句中初始化一个BLOB变量,取值为NULL。 返回值类型:BLOB 示例: 123456 --新建表CREATE TABLE blob_tb(b blob,id int) DISTRIBUTE BY REPLICATION;--插入数据INSERT INTO blob_tb VALUES (empty_blob(),1);--删除表 DROP TABLE blob_tb; 使用DBMS.GETLENGTH求得的长度为0。
  • ifnull(expr1, expr2) 描述:当expr1不为NULL时,返回expr1,否则返回expr2。 ifnull(expr1, expr2) 逻辑上等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。 示例: 12345 SELECT ifnull(NULL,'hello'); ifnull-------- hello(1 row) 参数expr1和expr2可以为任意类型,返回结果类型规则请参考UNION,CASE和相关构造。
  • coalesce(expr1, expr2, ..., exprn) 描述:返回参数列表中第一个非NULL的参数值。 COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。 示例: 12345 SELECT coalesce(NULL,'hello'); coalesce---------- hello(1 row) 如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。 它常用于在显示数据时用缺省值替换NULL。 和CASE表达式一样,COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。
  • decode(base_expr, compare1, value1, Compare2,value2, … default) 描述:把base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。 示例: 12345 SELECT decode('A','A',1,'B',2,0); case------ 1(1 row)
  • nullif(expr1, expr2) 描述:当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。 nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。 示例: 12345 SELECT nullif('hello','world'); nullif -------- hello(1 row) 备注: 如果两个参数的数据类型不同,则: 两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如: 12345 SELECT nullif('1234'::VARCHAR,123::INT4); nullif -------- 1234(1 row) 12 SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE);ERROR: invalid input syntax for type timestamp: "1234" 两种数据类型之间不存在隐式转换,则返回错误 。如: 12345 SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE);ERROR: operator does not exist: boolean = timestamp without time zoneLINE 1: SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE) FROM DUAL;^HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
  • nvl( expr1 , expr2 ) 描述:如果expr1为NULL则返回expr2。如果expr1非NULL,则返回expr1。 示例: 12345 SELECT nvl('hello','world'); nvl ------- hello(1 row) 参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换,如果可以则返回第一个参数类型。如果第二个参数不能向第一个参数进行隐式转换而第一个参数可以向第二个参数进行隐式转换,则返回第二个参数的类型。如果两个参数之间不存在隐式类型转换并且也不属于同一类型则报错。
  • pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean]) 描述:返回一个二进制文件的内容。 返回值类型:bytea 备注:pg_read_binary_file的功能与pg_read_file类似,除了结果的返回值为bytea类型不一致,相应地不会执行编码检查。与convert_from函数结合,这个函数可以用来读取用指定编码的一个文件。 1 SELECT convert_from(pg_read_binary_file('filename'), 'UTF8');
  • pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的boolean值。典型的用法: 1 SELECT * FROM pg_stat_file('filename'); 1 SELECT (pg_stat_file('filename')).modification; 示例: 123456789 SELECT * FROM pg_stat_file('postmaster.pid'); size | access | modification | change | creation | isdir ------+------------------------+------------------------+------------------------+----------+------- 117 | 2017-06-05 11:06:34+08 | 2017-06-01 17:18:08+08 | 2017-06-01 17:18:08+08 | | f(1 row) 12345 SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08(1 row)
  • pg_read_file(filename text, offset bigint, length bigint) 描述:返回一个文本文件的内容。 返回值类型:text 备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。 示例: 1 2 3 4 5 6 7 8 91011 SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/hadoop/data1/coordinator+ 1500022474 + 8000 + /var/run/dws + localhost + 2(1 row)
  • pg_ls_dir(dirname text) 描述:列出目录中的文件。 返回值类型:setof text 备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名字。 示例: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536 SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .postgresql.conf.swp postgresql.conf pg_tblspc PG_VERSION pg_ident.conf core server.crt pg_serial pg_twophase postgresql.conf.lock pg_stat_tmp pg_notify pg_subtrans pg_ctl.lock pg_xlog pg_clog base pg_snapshots postmaster.opts postmaster.pid server.key.rand server.key.cipher pg_multixact pg_errorinfo server.key pg_hba.conf pg_replslot .pg_hba.conf.swp cacert.pem pg_hba.conf.lock global gaussdb.state(32 rows)
  • mask_partial(column_name [, input_format, output_format], mask_char, mask_from[, mask_to]) 描述:针对字符类型数据,对照指定的输入输出格式,将第mask_from到mask_to位的数字部分脱敏成mask_char指定的字符。 参数说明: input_format 输入格式是由V和F组成的字符序列,与脱敏列数据长度相同。V对应位置的字符可能会被脱敏,F对象位置的字符会被忽略跳过,V字符序列标识脱敏范围。输入输出格式参数适用于定长数据,比如,银行卡号、身份证号、手机号等。 output_format 输出格式是由V和其他任意字符组成的字符序列,与脱敏列数据长度相同。V字符位置与input_format的V位置对应,其他字符位置与input_format的F位置对应,且不会脱敏,通常为数据分隔符。 input_format和output_format可以缺省或指定为空串"",此时,无输入输出格式要求,原始字符序列范围即为脱敏范围。 mask_char 脱敏字符,仅允许长度为1的任意字符。场景的脱敏字符包括"*","#"等。 mask_from 脱敏范围的起始位置,要求大于0。 mask_to 脱敏范围的结束位置,允许缺省。缺省时,即脱敏到原始数据结束位置。 返回值类型:与入参column_name数据类型相同。
  • mask_partial(column_name, mask_field1, mask_value1, mask_field2, mask_value2, mask_field3, mask_value3) 描述:按指定三个时间域做部分脱敏,仅适用于日期或时间类型数据。若mask_value取-1,即此mask_field不脱敏。其中,mask_field可以取"month"、"day"、"year"、"hour"、"minute"、"second"六个时间域之一。各域的取值范围需满足实际时间单位的取值范围。 返回值类型:与入参column_name数据类型相同。
  • mask_partial(column_name, mask_digital, mask_from[, mask_to]) 描述:针对数值类型数据,将第mask_from到mask_to位的数字部分脱敏成mask_digital对应的数字。其中,参数mask_to允许缺省,缺省时即脱敏到数据结束位置。参数mask_digital只能取[0,9]区间内的数字。 返回值类型:与入参column_name数据类型相同。
  • 自定义脱敏函数 支持用户使用PL/PGSQL语言自定义脱敏函数。 自定义脱敏函数需要严格遵循如下要求: 返回值与脱敏列类型一致。 函数必须可下推。 参数列表除脱敏格式外,只能包含一个脱敏列。 函数仅实现针对特定数据类型的格式化改写功能,不能涉及与其他表对象的复杂关联操作。 不满足前两项中任一项时,创建脱敏策略会报错。不满足后两项中任一项时,可成功创建脱敏策略,但查询执行结果可能会出现不可预知的问题。
  • set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value,如果is_local为true,则新值将只应用于当前事务。如果希望新值应用于当前会话,可以使用false,和SQL语句SET是等效的。比如: 123456 SELECT set_config('log_statement_stats', 'off', false); set_config------------ off(1 row)
  • current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 123456 SELECT current_setting('datestyle'); current_setting----------------- ISO, MDY(1 row)
  • NOT IN expression NOT IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果在列表中的内容没有符合左侧表达式结果的内容,则NOT IN的结果为true。如果有符合的内容,则NOT IN的结果为false。 示例如下: 12345 SELECT 8000+500 NOT IN (10000, 9000) AS RESULT; result ---------- t(1 row) 如果查询语句返回结果为空,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则NOT IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。 在所有情况下X NOT IN Y等价于NOT(X IN Y)。
  • IN expression IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。 示例如下: 12345 SELECT 8000+500 IN (10000, 9000) AS RESULT; result ---------- f(1 row)
  • pg_delete_audit() 描述:删除指定时间段的审计日志。 返回值类型:void 基于数据库安全考虑,不提供删除指定时间段的审计日志的函数接口,调用该函数将直接报“ERROR: For security purposes, it is not allowed to manually delete audit logs”。 12 SELECT * FROM pg_delete_audit('2023-01-10 17:00:00','2023-01-10 19:00:00');ERROR: For security purposes, it is not allowed to manually delete audit logs
  • login_audit_messages_pid(flag boolean) 描述:查看登录用户的登录信息。与login_audit_messages的区别在于结果基于当前backendid向前查找。所以不会因为同一用户的后续登录,而影响本次登录的查询结果。也就是查询不到该用户后续登录的信息。 返回值类型:元组 示例: 查看上一次登录认证通过的日期、时间和IP等信息: 12345 SELECT * FROM login_audit_messages_pid(true); username | database | logintime | type | result | client_conninfo | backendid------------+----------+------------------------+---------------+--------+-------------------- dbadmin | postgres | 2017-06-02 15:28:34+08 | login_success | ok | gsql@[local] | 140311900702464(1 row) 查看上一次登录认证失败的日期、时间和IP等信息: 1234 SELECT * FROM login_audit_messages_pid(false) ORDER BY logintime desc limit 1; username | database | logintime | type | result | client_conninfo | backendid------------+----------+------------------------+--------------+--------+-------------------------(0 rows) 查看自从最后一次认证通过以来失败的尝试次数、日期和时间: 1234 SELECT * FROM login_audit_messages_pid(false); username | database | logintime | type | result | client_conninfo | backendid------------+----------+------------------------+--------------+--------+-------------------------(0 rows)
  • pg_query_audit() 描述:查看当前CN节点审计日志。 返回值类型:record 函数返回字段如下表1: 表1 pg_query_audit函数返回字段 名称 类型 描述 begintime timestamp with time zone 操作的执行开始时间。 endtime timestamp with time zone 操作的执行结束时间。 operation_type text 操作类型,具体类型见表2。 audit_type text 审计类型,具体类型见表3。 result text 操作结果。 username text 执行操作的用户名。 database text 数据库名称。 client_conninfo text 客户端连接信息,即gsql,jdbc或odbc。 object_name text 操作对象名称。 command_text text 操作的执行命令。 detail_info text 执行操作详细信息。 transaction_xid text 事务ID。 query_id text 查询ID。 node_name text 节点名称。 thread_id text 线程ID。 local_port text 本地端口。 remote_port text 远端端口。 表2 operation_type操作类型项 操作类型 描述 audit_switch 表示对用户打开和关闭审计日志操作场景进行审计。 login_logout 表示对用户登录和登出操作场景进行审计。 system 表示对系统的启停、实例切换操作场景进行审计。 sql_parse 表示对SQL语句解析场景进行审计。 user_lock 表示对用户锁定和解锁操作的场景进行审计。 grant_revoke 表示对用户权限授予和回收操作场景进行审计。 violation 表示对用户访问存在越权的场景进行审计。 ddl 表示对DDL操作场景进行审计,因为DDL操作会根据操作对象进行更细粒度控制,仍然沿用审计开关audit_system_object,即由audit_system_object控制对哪些对象的DDL操作进行审计(此处不配置ddl,只要配置了audit_system_object,审计也会生效)。 dml 表示对DML操作场景进行审计。 select 表示对SELECT操作场景进行审计。 internal_event 表示对内部事件操作场景进行审计。 user_func 表示对用户自定义函数、存储过程、匿名块操作场景进行审计。 special_func 表示对特殊函数调用操作场景进行审计,特殊函数包括:pg_terminate_backend和pg_cancel_backend。 copy 表示对COPY操作场景进行审计。 set 表示对SET操作场景进行审计。 transaction 表示对事务操作场景进行审计。 vacuum 表示对VACUUM操作场景进行审计。 analyze 表示对ANALYZE操作场景进行审计。 cursor 表示对游标操作的场景进行审计。 anonymous_block 表示对匿名块操作场景进行审计。 explain 表示对EXPLAIN操作场景进行审计。 show 表示对SHOW操作场景进行审计。 lock_table 表示对锁表操作场景进行审计。 comment 表示对COMMENT操作场景进行审计。 preparestmt 表示对PREPARE、EXECUTE、DEALLOCATE操作场景进行审计。 cluster 表示对CLUSTER操作场景进行审计。 constraints 表示对CONSTRAINTS操作场景进行审计。 checkpoint 表示对CHECKPOINT操作场景进行审计。 barrier 表示对BARRIER操作场景进行审计。 cleanconn 表示对CLEAN CONNECTION操作场景进行审计。 seclabel 表示对安全标签操作进行审计。 notify 表示对通知操作进行审计。 load 表示对加载操作进行审计。 表3 audit_type审计类型项 审计类型 描述 audit_open/audit_close 表示审计类型为打开和关闭审计日志操作。 user_login/user_logout 表示审计类型为用户登录/退出成功的操作和用户。 system_start/system_stop/system_recover/system_switch 表示审计类型为系统的启停、实例切换操作。 sql_wait/sql_parse 表示审计类型为SQL语句解析。 lock_user/unlock_user 表示审计类型为用户锁定和解锁成功的操作。 grant_role/revoke__role 表示审计类型为用户权限授予和回收的操作。 user_violation 表示审计类型为用户访问存在越权的操作。 ddl_数据库对象 表示审计类型为DDL操作,因为DDL操作由会根据操作对象进行更细粒度控制,仍然沿用审计开关audit_system_object,即由audit_system_object控制对哪些对象的DDL操作进行审计(此处不配置ddl,只要配置了audit_system_object,审计也会生效)。 例如:ddl_sequence表示审计类型为序列相关操作。 dml_action_insert/dml_action_delete/dml_action_update/dml_action_merge/dml_action_select 表示审计类型为INSERT、DELETE、UPDATE、MERGE等DML操作。 internal_event 表示审计类型为内部事件。 user_func 表示审计类型为用户自定义函数、存储过程、匿名块操作。 special_func 表示审计类型为特殊函数调用操作,特殊函数包括:pg_terminate_backend和pg_cancel_backend。 copy_to/copy_from 表示审计类型为COPY相关操作。 set_parameter 表示审计类型为SET操作。 trans_begin/trans_commit/trans_prepare/trans_rollback_to/trans_release/trans_savepoint/trans_commit_prepare/trans_rollback_prepare/trans_rollback 表示审计类型为事务相关操作。 vacuum/vacuum_full/vacuum_merge 表示审计类型为VACUUM相关操作。 analyze/analyze_verify 表示审计类型为ANALYZE相关操作。 cursor_declare/cursor_move/cursor_fetch/cursor_close 表示审计类型为游标相关操作。 codeblock_execute 表示审计类型为匿名块。 explain 表示审计类型为EXPLAIN操作。 show 表示审计类型为SHOW操作。 lock_table 表示审计类型为锁表操作。 comment 表示审计类型为COMMENT操作。 prepare/execute/deallocate 表示审计类型为PREPARE、EXECUTE或DEALLOCATE操作。 cluster 表示审计类型为CLUSTER操作。 constraints 表示审计类型为CONSTRAINTS操作。 checkpoint 表示审计类型为CHECKPOINT操作。 barrier 表示审计类型为BARRIER操作。 cleanconn 表示审计类型为CLEAN CONNECTION操作。 seclabel 表示审计类型为安全标签操作。 notify 表示审计类型为通知操作。 load 表示审计类型为加载操作。
  • login_audit_messages(flag boolean) 描述:查看登录用户的登录信息。 返回值类型:元组 示例: 查看上一次登录认证通过的日期、时间和IP等信息: 12345 SELECT * FROM login_audit_messages(true); username | database | logintime | type | result | client_conninfo ------------+----------+------------------------+---------------+--------+-------------------- dbadmin | gaussdb | 2017-06-02 15:28:34+08 | login_success | ok | gsql@[local](1 row) 查看上一次登录认证失败的日期、时间和IP等信息: 1234 SELECT * FROM login_audit_messages(false) ORDER BY logintime desc limit 1; username | database | logintime | type | result | client_conninfo ------------+----------+------------------------+--------------+--------+-------------------------(0 rows) 查看自从最后一次认证通过以来失败的尝试次数、日期和时间: 1234 SELECT * FROM login_audit_messages(false); username | database | logintime | type | result | client_conninfo ------------+----------+------------------------+--------------+--------+-------------------------(0 rows)
  • gs_password_deadline() 描述:显示当前账户距离密码过期的时间。密码过期后提示用户修改密码。与GUC参数password_effect_time相关。 返回值类型:interval 示例: 12345 SELECT gs_password_deadline(); gs_password_deadline ------------------------- 83 days 17:44:32.196094(1 row)
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全