如何测试我的Oracle DB版本是否支持PIVOT函数



我需要找出一种方法来确定Oracle是11g还是更新的,因为基本上我需要知道我运行的数据库是否支持PIVOT。

获取版本号本身并不难,所以我有:

select * from v$version 

不幸的是,这不是一个简单的数字,而是5条记录,包括字符串和各种不同的版本号:

Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
PL/SQL Release 10.2.0.5.0 - Production
CORE    10.2.0.5.0  Production
TNS for Linux: Version 10.2.0.5.0 - Production
NLSRTL Version 10.2.0.5.0 - Production

那么,是否有一种方法来确定我的Oracle是11g或更高,甚至更好,如果DB支持PIVOT语句?

谢谢!

判断您的Oracle版本是否支持PIVOT的方法之一是查询V$RESERVED_WORDS视图,以找出保留字PIVOT是否存在。

SQL> select keyword
  2    from v$reserved_words
  3   where keyword = 'PIVOT'
  4  ;
KEYWORD
---------
PIVOT

如果您正在编写代码(正如您在@Ben的回答的评论中提到的,引用I'm creating a procedure that generates and executes SQL statements for a datamart),将利用版本特定的功能,您可以(并且是首选的方法)使用dbms_db_version包进行条件编译。例如:

 create or replace some_proc
 is
 begin
   $if dbms_db_version.ver_le_10_2 -- for example
   $then
     -- features up to 10g r2 version 
   $else
     -- current release  
   $end
 end;

希望以下内容对您有所帮助

检查Oracle版本

识别Oracle数据库版本

我有点困惑,为什么你不知道你使用的是什么版本的Oracle

但是,您可以使用系统视图PRODUCT_COMPONENT_VERSION来获取当前版本。Oracle建议您检查当前的版本号。

select * from PRODUCT_COMPONENT_VERSION

所以你可以看到输出;它也适用于SQL Fiddle。

最新更新