4

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

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

select * from v$version 

不幸的是,这并没有给出一个简单的数字,而是 5 条记录,包括 stings 和各种不同的版本号:

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

那么,如果数据库支持 PIVOT 语句,有没有办法确定我的 Oracle 是 11g 或更高,甚至更好?

谢谢!

4

3 回答 3

7

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

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

KEYWORD
---------
PIVOT

如果您正在编写一个代码(正如您在@Ben 的答案的评论中提到的那样, quote 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;
于 2012-12-27T15:48:32.607 回答
2

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

检查 Oracle 版本

识别您的 Oracle 数据库软件版本

于 2012-12-27T15:45:42.180 回答
2

我有点困惑为什么你不知道你已经在使用什么版本的 Oracle。

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

select * from PRODUCT_COMPONENT_VERSION

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

于 2012-12-27T15:46:10.920 回答