¿Hay una manera de lista de funciones agregadas con el apoyo de un DBMS utilizando metadatos JDBC o ejecutar cualquier DBMS consulta específica ir a buscar?Lista de funciones de agregación
Respuesta
Tu entrada tiene varias etiquetas DB, y cada uno tiene catálogos del sistema y/o un esquema de información que le permiten conocer la lista de los procedimientos. ¿Qué tabla/vista a la pregunta será diferente de un motor de base de datos a la siguiente, sin embargo ... (pg_proc Por ejemplo, en Postgres que UNIRÍA y pg_aggregate, ya INFORMATION_SCHEMA.ROUTINES no le dirán cuales son agregados procs.)
En general, es seguro asumir que las funciones agregadas típicas (sum()
, count()
, avg()
...) existen en todas las implementaciones de bases de datos.
La única excepción Soy consciente de Postgres es, que no soporta any()
/some()
debido a ambiguity in the syntax:
SELECT b1 = ANY((SELECT b2 FROM t2 ...)) FROM t1 ...;
En SQL Server se puede consultar XML que está en el directorio de instalación:
DECLARE @xml XML
SELECT @xml = x.y
FROM OPENROWSET(BULK 'C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\SqlToolsData\1033\SQLCommonObjects.xml', SINGLE_BLOB) x(y)
;WITH XMLNAMESPACES('http://tempuri.org/SqlCommonObjects.xsd' AS ns)
SELECT
Category.Name.value('ns:DisplayName[1]', 'VARCHAR(MAX)') [Category],
[Function].Name.value('ns:Name[1]', 'VARCHAR(MAX)') [Function],
[Function].Name.query('for $p in ns:Parameters/ns:Parameter return
concat($p/ns:Name[1],",")').value('.', 'VARCHAR(MAX)') Parameters
FROM @xml.nodes('//ns:Category[ns:DisplayName="Aggregate Functions"]')
AS Category(Name)
CROSS APPLY Category.Name.nodes('ns:Objects/ns:Function') [Function](Name)
Donde después de la instrucción BULK debe dar su carpeta (la diferencia es principalmente Archivos de programa "y" Program_Files (x86) "y la versión del servidor SQL (100 es 2008 en el ejemplo)
No hay nada fullproof, ya que no es parte de la especificación JDBC. Si no sabe qué motor de base de datos está utilizando en tiempo de ejecución, la mejor opción es enviar una consulta de prueba a la base de datos y verificar si falló o no antes de usar cualquier función agregada que no sea compatible.
- 1. funciones de ventana y más agregación "local"
- 2. zoológico objeto de agregación
- 3. Función de agregación en MySQL - lista (como LISTAGG en Oracle)
- 4. Lista de funciones de OpenCV
- 5. Lista de funciones C obsoletas?
- 6. Tablas pivotantes sin agregación?
- 7. ¡La composición de las funciones en una lista de funciones!
- 8. lista de funciones de apagado registradas
- 9. VBA lista de argumentos de funciones seleccionar
- 10. Sikuli Lista de funciones y operadores
- 11. reproducir una lista de funciones y parámetros
- 12. Lista de funciones como selecciones en Java
- 13. Sphinx: lista de funciones en un módulo
- 14. Lista de funciones del archivo PHP
- 15. ¿Una lista de funciones "globales" scala?
- 16. Agregación de datos mongodb vs mysql
- 17. Herencia vs agregación
- 18. agregación mongod sort
- 19. Maven: Agregación vs. Dependencia
- 20. Agregación UML vs asociación
- 21. Asociación vs. Agregación
- 22. Agregación COM administrada
- 23. Django agregación entre la relación inversa
- 24. agregación de múltiples columnas en data.table
- 25. Agregación de cadenas en SSRS 2005
- 26. MongoDB - Vista materializada/Agregación de estilo OLAP
- 27. Usando SlickGrid Agregación/Suma de una columna
- 28. implementación de composición y agregación en C#?
- 29. ¿GQL admite la agregación de estilo SQL comúnmente disponible?
- 30. Funciones de proceso de una lista de cadenas en Python
Muchas gracias a todos, mi aplicación necesita lista de funciones agregadas con el apoyo de DBMS subyacente publicar. Estoy buscando tales métodos para sql-server, oracle, sybase y mysql. No forma parte de la especificación JDBC, por lo que estoy buscando consultas individuales para estos dbs. La última opción sería mantener esta lista en un archivo de configuración para todos los dbs. –