sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Puede PostgreSQL realizar una unión entre dos procedimientos almacenados de SQL Server?

  1. ¿Puede PostgreSQL realizar una unión entre dos ~procedimientos donde las columnas no se conocen hasta el tiempo de ejecución?

La respuesta básica es simple porque actualmente no hay procedimientos almacenados en Postgres (hasta Postgres 10), solo funciones, que proporcionan casi, pero no exactamente, la misma funcionalidad, como lo ha expuesto en la pregunta.

Y cualquier función se puede usar en el FROM cláusula de un SELECT consulta como cualquier otra tabla.

Actualización:
Los procedimientos SQL ("procedimientos almacenados") se introducen con Postgres 11.
El manual para CREATE PROCEDURE .

El propio SQL exige conocer el tipo de devolución en tiempo de ejecución. Hay un caso de frontera :puede declarar el tipo de retorno con la llamada de función usando tipos polimórficos . Instrucciones detalladas aquí (el último capítulo es el más relevante para usted):

  • Refactorice una función PL/pgSQL para devolver el resultado de varias consultas SELECT
  1. ¿Puede hacer lo mismo, excepto usar procedimientos almacenados que residen en una base de datos externa de terceros (quizás a través de contenedores de datos externos o algún otro mecanismo)?

Eso es un NO , también, basado en el mismo principio. Si usa tablas externas, debe proporcionar un tipo de retorno claramente definido de una u otra manera.

Usted podría ser capaz de agrupar toda la fila resultante de un procedimiento almacenado en SQL-Server en una sola representación de texto delimitada por tabuladores, pero luego (además de ser propenso a errores e ineficiente) tiene una sola columna y necesita la metainformación que define columnas individuales una u otra forma de extraer columnas - catch 22.