4

Oracle が 11g 以降かどうかを判断する方法を考え出す必要があります。基本的に、実行している DB が 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

では、DB が PIVOT ステートメントをサポートしている場合、私の Oracle が 11g 以上か、それ以上かを判断する方法はありますか?

ありがとう!

4

3 に答える 3

7

Oracle のバージョンがサポートしているかどうかを判断する方法の 1 つは、 V$RESERVED_WORDSPIVOTビューをクエリして、予約語が存在するかどうかを確認することです。PIVOT

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

KEYWORD
---------
PIVOT

I'm creating a procedure that generates and executes SQL statements for a datamartバージョン固有の機能を利用するコードを作成している場合 (@Ben の回答へのコメントで引用したように)、条件付きコンパイルに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 のバージョンがわからない理由について、私は少し混乱しています。

ただし、システム ビューPRODUCT_COMPONENT_VERSIONを使用して現在のバージョンを取得できます。これは、現在のリリース番号を確認するためにオラクルが推奨するものです。

select * from PRODUCT_COMPONENT_VERSION

出力を確認できます。SQL Fiddleでも機能します。

于 2012-12-27T15:46:10.920 に答える
2

私は以下があなたを助けることを願っています

Oracle のバージョンを確認する

Oracle Databaseソフトウェア・リリースの識別

于 2012-12-27T15:45:42.180 に答える