2015-09-21 3 views
1
select * from v$version; 

печатает:Как проверить, является ли текущая СУБД Oracle версией Enterprise?

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production 
... 

Теперь я хотел бы проверить, если текущая СУБД Oracle является версия Enterprise (только Enterprise версии без версии ЭСТ.)?

DECLARE 
    VAR_CURRENTVERSION VARCHAR(500); 
BEGIN 
    SELECT * INTO VAR_CURRENTVERSION FROM v$version; 
    IF (VAR_CURRENTVERSION = 'ENTERPRISE_EDITION') THEN 
    SYS.DBMS_OUTPUT.PUT_LINE('You have Enterprise Oracle Edition Version'); 
    ELSE 
    SYS.DBMS_OUTPUT.PUT_LINE('You have Normal Oracle Edition Version'); 
    END IF; 
END; 
/

Является ли в Oracle любым макросом, например "ENTERPRISE_EDITION"?

+1

Нет. Очевидно, вы можете сделать запрос типа 'like' против' v $ version'. Вы можете поместить эту проверку в свою собственную функцию. PL/SQL не имеет понятия макроса. Имейте в виду, что существуют угловые случаи, когда данные 'v $ version' не дживут с тем, что на самом деле установлено. –

ответ

2

Существует не магия ENTERPRISE_EDITION макрос или функция. Вы можете захотеть сделать что-то вроде следующего:

DECLARE 
    bIs_enterprise BOOLEAN; 
BEGIN 
    bIs_enterprise := FALSE; 

    FOR aRow IN (SELECT BANNER 
       FROM V$VERSION 
       WHERE UPPER(BANNER) LIKE '%DATABASE%ENTERPRISE%') 
    LOOP 
    bIs_enterprise := TRUE; 
    END LOOP; 
END; 

Совершено таким образом bIs_enterprise будет TRUE, если база данных вы привязаны к под управлением версии предприятия, и FALSE, если нет.

Удачи.

0

У меня есть идея. Решение с помощью курсоров.

DECLARE 
    cursor CUR_VERSION IS SELECT * FROM v$version; 
    VAR_CURRENTVERSION VARCHAR(500); 
    IS_ENTERPRISE_VERSION NUMBER; 
BEGIN 
    OPEN CUR_VERSION; 
    FETCH CUR_VERSION into VAR_CURRENTVERSION; 
    CLOSE CUR_VERSION; 
    SELECT INSTR(VAR_CURRENTVERSION, 'Enterprise') INTO IS_ENTERPRISE_VERSION from dual; 

    IF (IS_ENTERPRISE_VERSION > 0) THEN 
    SYS.DBMS_OUTPUT.PUT_LINE('You have Enterprise Oracle Edition Version'); 
    ELSE 
    SYS.DBMS_OUTPUT.PUT_LINE('You have Normal Oracle Edition Version'); 
    END IF; 
END; 
Смежные вопросы