script postgres pgloader online convertir mysql postgresql plpgsql

mysql - pgloader - PostgreSQL: ¿Cómo DROP FUNCIONAR SI EXISTE sin especificar parámetros?



sql mysql to postgresql (2)

A partir de Postgres 10, puede omitir funciones solo por nombre, siempre que los nombres sean exclusivos de su esquema.

Ejemplo:

drop function if exists Foo;

Documentación here .

Puedo crear una función con éxito de la siguiente manera:

CREATE FUNCTION Foo(MY_Value INT) RETURNS INT AS ''SELECT 2 + MY_Value'' LANGUAGE SQL

Sin embargo, si primero quiero comprobar si la función existe y luego soltarla si la tengo, debo especificar lo siguiente:

DROP FUNCTION IF EXISTS Foo(My_Value INT);

Sin especificar los parámetros de entrada, lo siguiente devuelve un error que indica "AVISO: la función foo () no existe, se salta"

DROP FUNCTION IF EXISTS Foo();

De manera similar a MySQL, ¿existe una manera de eliminar una FUNCIÓN en PostgreSQL sin tener que especificar los parámetros de la función? En otras palabras, ¿hay un equivalente para lo siguiente en la declaración de MySQL (es decir, descartar el procedimiento almacenado sin especificar los parámetros de entrada)?

DROP PROCEDURE IF EXISTS Foo;


Las funciones de Postgres se pueden sobrecargar , por lo que los parámetros son necesarios para distinguir las funciones sobrecargadas. Para identificar inequívocamente una función, puede poner solo los tipos de sus parámetros.

DROP FUNCTION IF EXISTS Foo(INT);