宏变量
功能描述
系统提供的宏变量包括SYSDATE,DBTIMEZONE,SESSIONTIMEZONE和SYSTIMESTAMP,ROWNUM,ROWID。
- SYSDATE:获取当前系统时期。
- DBTIMEZON:返回数据库时区。
- SESSIONTIMEZONE:返回当前会话时区。
- SYSTIMESTAMP:返回本机数据库上当前系统日期和时间,精确到毫秒。
- ROWNUM:获取查询结果中的元组序号。
ROWID:获取一条记录的一个相对唯一地址值。ROWID是一个伪列,该值表明了该行在数据库中的详细物理地址,通过ROWID,数据库可以快速定位某行具体数据的位置。
- 宏变量ROWID仅在数据库兼容模式为Oracle时能够使用(即创建DB时DBCOMPATIBILITY='A'),在其他数据库兼容模式下不能使用该特性。
- 子查询中也可以使用ROWID。
示例
SYSDATE
select sysdate from dual;
返回结果为:
sysdate --------------------- 2020-09-26 00:44:05 (1 row)
DBTIMEZONE
select dbtimezone;
返回结果为:
dbtimezone ------------ PRC (1 row)
SESSIONTIMEZONE
select sessiontimezone;
返回结果为:
sessiontimezone ----------------- PRC (1 row)
SYSTIMESTAMP
select systimestamp;
返回结果为:
sysdate --------------------- 2022-07-01 16:43:47 (1 row)
ROWNUM
1、创建临时表并插入数据。
CREATE TEMPORARY TABLE empsalary ( depname varchar, empno bigint, salary int, enroll_date date ); INSERT INTO empsalary VALUES ('develop', 10, 5200, '2007-08-01'), ('sales', 1, 5000, '2006-10-01'), ('personnel', 5, 3500, '2007-12-10'), ('sales', 4, 4800, '2007-08-08'), ('personnel', 2, 3900, '2006-12-23'), ('develop', 7, 4200, '2008-01-01'), ('develop', 9, 4500, '2008-01-01'), ('sales', 3, 4800, '2007-08-01'), ('develop', 8, 6000, '2006-10-01'), ('develop', 11, 5200, '2007-08-15');
2、执行查询语句。
select rownum,depname,empno,salary from empsalary where rownum <3;
返回结果为:
rownum | depname | empno | salary --------+---------+-------+-------- 1 | develop | 10 | 5200 2 | sales | 1 | 5000 (2 rows)
ROWID
1、创建并切换至兼容模式为ORACLE的数据库db_oracle。
CREATE DATABASE db_oracle dbcompatibility='A'; \c db_oracle
2、创建测试表并插入数据。
create table t01(id int,name varchar2(32)); insert into t01(id,name) values(1,'a'),(2,'b'),(3,'c'),(4,'d');
3、查询ROWID。
select rowid,t.* from (select a.* from t01 a) t;
返回结果为:
rowid | id | name ----------------------+----+------ h1IAAA==AAAAAA==AQA= | 1 | a h1IAAA==AAAAAA==AgA= | 2 | b h1IAAA==AAAAAA==AwA= | 3 | c h1IAAA==AAAAAA==BAA= | 4 | d (4 rows)
4、子查询外层支持ROWID。
select rowid as rowid_2,t.* from (select rowid,a.* from t01 a) t;
返回结果为:
rowid_2 | rowid | id | name ----------------------+----------------------+----+------ h1IAAA==AAAAAA==AQA= | h1IAAA==AAAAAA==AQA= | 1 | a h1IAAA==AAAAAA==AgA= | h1IAAA==AAAAAA==AgA= | 2 | b h1IAAA==AAAAAA==AwA= | h1IAAA==AAAAAA==AwA= | 3 | c h1IAAA==AAAAAA==BAA= | h1IAAA==AAAAAA==BAA= | 4 | d (4 rows)