变量CURRENT_ROLE
用于: DSQL, PSQL
描述: 变量CURRENT_ROLE是一个包含当前连接用户的角色的上下文变量,如果没有活跃的角色,那么变量CURRENT_ROLE的角色为NONE.
类型: VARCHAR(31)
例子:
if (current_role <> 'MANAGER')
then exception only_managers_may_delete;
else
delete from Customers where custno = :custno;
变量CURRENT_ROLE总是代表一个有效的角色或NONE,如果用连接带上不存一个不存在的角色,引擎默默地重置它为NONE,不会返回一个错误。
用于: DSQL, PSQL, ESQL
描述: 变量CURRENT_TIME返回服务器当前时间.在版本2.0之前,所使用的小数部分总是".0000",使用一个有效的精度(0)小数。从Firebird2.0开始,当轮询这个变量时可以指定一个的精度。默认的仍然是0位小数,即秒精度
类型: TIME
语法:
CURRENT_TIME [(precision)]
precision ::= 0 | 1 | 2 | 3
在ESQL中不支精度参数选项.
表 8.1. 变量CURRENT_TIME的参数
参数 | 描述 |
precision | 精度.默认值是0.在ESQL中不被支持 |
例子:
select current_time from rdb$database
-- 返回 例如 14:20:19.6170
select current_time(2) from rdb$database
-- 返回 例如 14:20:23.1200
备注:
• 不同于变量CURRENT_TIME, 变量CURRENT_TIMESTAMP的默认精度已经改成了3位小数.作为一个因素,CURRENT_TIMESTAMP不再是准确的CURRENT_DATE和 CURRENT_TIME和,除非显式地指定一个精度。
• 在PSQL模块(存储过程、触发器或可执行块),变量CURRENT_TIME的值将保持常量,在每次读它时。如果多个模块调用或相互引发,在最外层模块的持续时间内,值将保持不变。如果你需要一个间隔值在PSQL(例如测量时间间隔),使用'NOW'。