Existe uma função/procedimento/variável db2 que pode ser usada para determinar de qual plataforma uma fonte de dados se origina? sysibm.sysdummy1 existe, então presumo que seja Db2, mas parte do SQL não parece correta de acordo com a sintaxe LUW. Existe uma maneira fácil de descobrir via SQL de qual plataforma uma fonte de dados se origina?
É uma pergunta muito aberta, pois não há um método infalível para determinar a versão e a plataforma do servidor. Você precisará aplicar algumas heurísticas.
No Db2 para LUW (e somente LUW) desde a v 10.1 há uma visão do sistema
dbmcfg
que pode retornar a versão do servidor:então, se for bem-sucedido, você terá certeza de que é Db2 para LUW de determinado nível de versão. Da mesma forma, desde a v 9.7 você pode consultar
sysibmadm.env_inst_info
(ou primeiro pesquisá-lo emsyscat.tables
).Outro indicador do Db2 para LUW é a presença de algumas visualizações compatíveis com Oracle desde a v.9.7, por exemplo
syspublic.dual
ousysibmadm.all_objects
.Um bom indicador do Db2 para z/OS seria a presença de tabelas de catálogo específicas de mainframe, por exemplo,
sysibm.locations
ousysibm.syscopy
, que remontam à v9 pelo menos.A presença de visualizações de catálogo nos esquemas
QSYS
e , por exemplo , indicará Db2 para i (AS/400).QSYS2
QSYS2.TABLES
Nem o Db2 para z/OS nem o Db2 para eu tenho as
SYSCAT
visualizações de esquema.