PROC预编译时加入 COMMON_PARSER=YES 选项,支持预编译分析函数(比如 ROW_NUMBER 和 OVER)
2013-09-11 16:30
453 查看
PROC预编译时加入 COMMON_PARSER=YES 选项,支持预编译分析函数(比如 ROW_NUMBER 和 OVER)
示例:
SQL> DESC T1;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(10)
DATE1 DATE
SQL> SELECT * FROM T1;
ID NAME DATE1
---------- ------------------------------ ------------------
101 aaa 09-SEP-13
101 bbb 10-SEP-13
101 ccc 11-SEP-13
102 ddd 08-SEP-13
102 eee 11-SEP-13
下面以 SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUMBER() OVER(partition by ID order by DATE1 desc) as rn FROM T1)T WHERE T.rn=1; 语句为例,在sqlplus提示符下执行结果正常,但在proc程序里预编译就不通过。
在sqlplus提示符下执行:
SQL> SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUMBER() OVER(partition by ID order by DATE1 desc) as rn FROM T1)T WHERE T.rn=1;
ID NAME DATE1
---------- ------------------------------ ------------------
101 ccc 11-SEP-13
102 eee 11-SEP-13
在proc程序里预编译出错:
Syntax error at line 7541, column 77, file test.pc:
Error at line 7541, column 77 in file test.pc
EXEC SQL SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUM
BER() OVER(partition by ID order by DATE1 desc) as rn FROM T1)T WHERE T.rn=1;
............................................................................1
PCC-S-02201, Encountered the symbol "(" when expecting one of the following:
, into, from,
Error at line 0, column 0 in file test.pc
解决办法:在预编译命令行上加 COMMON_PARSER=YES 选项即可。
示例:
SQL> DESC T1;
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
NAME VARCHAR2(10)
DATE1 DATE
SQL> SELECT * FROM T1;
ID NAME DATE1
---------- ------------------------------ ------------------
101 aaa 09-SEP-13
101 bbb 10-SEP-13
101 ccc 11-SEP-13
102 ddd 08-SEP-13
102 eee 11-SEP-13
下面以 SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUMBER() OVER(partition by ID order by DATE1 desc) as rn FROM T1)T WHERE T.rn=1; 语句为例,在sqlplus提示符下执行结果正常,但在proc程序里预编译就不通过。
在sqlplus提示符下执行:
SQL> SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUMBER() OVER(partition by ID order by DATE1 desc) as rn FROM T1)T WHERE T.rn=1;
ID NAME DATE1
---------- ------------------------------ ------------------
101 ccc 11-SEP-13
102 eee 11-SEP-13
在proc程序里预编译出错:
Syntax error at line 7541, column 77, file test.pc:
Error at line 7541, column 77 in file test.pc
EXEC SQL SELECT ID,NAME,DATE1 FROM (SELECT ID,NAME,DATE1,ROW_NUM
BER() OVER(partition by ID order by DATE1 desc) as rn FROM T1)T WHERE T.rn=1;
............................................................................1
PCC-S-02201, Encountered the symbol "(" when expecting one of the following:
, into, from,
Error at line 0, column 0 in file test.pc
解决办法:在预编译命令行上加 COMMON_PARSER=YES 选项即可。
相关文章推荐
- ROW_NUMBER() OVER() 分析函数的用法
- 浅谈oracle中row_number() over()分析函数用法
- 浅谈oracle中row_number() over()分析函数用法
- ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法
- oracle 中的 ROW_NUMBER() OVER() 分析函数的用法(oracle去重方法)
- Oracle中 row_number() over()分析函数
- oracle分析函数row_number() over()使用
- 深入探讨:oracle中row_number() over()分析函数用法
- over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用
- SQL中分析函数ROW_NUMBER() OVER(PARTITION BY GRADEOBJECTID ORDER BY BG.GRADEDATE DESC)的用法!!!
- oracle分析函数row_number() over()使用
- 菜鸟学堂 -【Oracle 分析函数over(),row_number()】
- 浅谈oracle中row_number() over()分析函数用法
- oracle分析函数row_number() over()使用
- ORACLE 中的 ROW_NUMBER() OVER() 分析函数的用法
- oracle中row_number() over()分析函数用法
- 排名函数(ROW_NUMBER、RANK、DENSE_RANK)及OVER子句 Oracle 中分析函数用法之--rank(),dense_rank(),partition,over()
- dense_rank() over()、rank() over()、row_number() over分析函数
- 使用 ROW_NUMBER() OVER ()分析函数 高性能地获得第一条数据
- oracle分析函数row_number() over()使用