根据Oracle DB版本运行sql

根据Oracle DB版本运行sql,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我需要在所有oracle版本为11的数据库上运行以下SQL select USERNAME,SYSDBA,SYSOPER,SYSASM from from v$pwfile_users 要查找数据库版本,请执行以下操作: SQL> SELECT distinct version FROM PRODUCT_COMPONENT_VERSION; VERSION ------------------------------------------------------------------

我需要在所有oracle版本为11的数据库上运行以下SQL

select USERNAME,SYSDBA,SYSOPER,SYSASM from from v$pwfile_users
要查找数据库版本,请执行以下操作:

SQL> SELECT distinct version FROM PRODUCT_COMPONENT_VERSION;
VERSION
--------------------------------------------------------------------------------
11.2.0.4.0
因此,只有当版本以“11”开头时,我才能运行查询。 如何在单个SQL查询中执行此操作?可能使用“case”?

类似于以下内容:

with ver as
  (select distinct substr(version, 1, 2) version
   from product_component_version
  )
select USERNAME,SYSDBA,SYSOPER,SYSASM  
From v$pwfile_users 
where exists (select null from ver where version = '11');

您可以编写自己的pl/sql函数来包装版本检查吗?您将使用哪个客户端?Sqlplus?sqlcl/Sql developer?当版本不是11Adjust WHERE子句以包含其他版本时,如何运行“从v$pwfile_用户选择用户名、SYSDBA、SYSOPER、SYSASM、SYSBACKUP、SYSDG、SYSKM、CON_ID”。或者,如果您想无条件地运行它,只需运行您在这个问题中发布的第一个SELECT—它不关心版本。