如何查看当前的Oracle DBMS是否为企业版?

How to check if the current Oracle DBMS is Enterprise version?

select * from v$version;

打印:

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

现在,我想检查一下当前的Oracle DBMS是不是企业版(只是企业版,没有Release等)?

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" 这样的宏?

没有魔法 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。

祝你好运。

我有一个想法。用游标解决。

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;