Firebird数据库
Firebird数据库语言参考-角色和时间变量
2016-05-27 11:43:20

用于: 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,不会返回一个错误。

 

变量CURRENT_TIME

用于: 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的参数

例子:

      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'。