Saltar al contenido

Ninguna función coincide con el nombre dado y los tipos de argumentos

Esta es la contestación más acertada que encomtrarás compartir, pero mírala pausadamente y valora si es compatible a tu trabajo.

Solución:

Su función tiene un par de smallint parámetros
Pero en la llamada, está utilizando literales numéricos que se supone que son de tipo integer.

A string literal o string constante ('123') no se escribe inmediatamente. Permanece del tipo “desconocido” hasta que se asigna o emite explícitamente.

Sin embargo, un literal numérico o constante numérica se escribe inmediatamente. Por documentación:

Una constante numérica que no contiene punto decimal ni exponente es inicialmente se supuso que era tipo integer si su valor se ajusta al tipo integer (32 bits); de lo contrario, se presume que es de tipo
bigint si su valor se ajusta al tipo bigint (64 bits); de lo contrario, se toma como tipo numeric. Siempre se supone inicialmente que las constantes que contienen puntos decimales y/o exponentes son del tipo numeric.

Más explicaciones y enlaces en esta respuesta relacionada:

  • ERROR de PostgreSQL: la función to_tsvector (carácter variable, desconocido) no existe

Solución

Agregar moldes explícitos para el smallint parámetros o citarlos.

Manifestación

CREATE OR REPLACE FUNCTION f_typetest(smallint)
  RETURNS bool AS 'SELECT TRUE' LANGUAGE sql;

Llamada incorrecta:

SELECT * FROM f_typetest(1);

Llamadas correctas:

SELECT * FROM f_typetest('1');
SELECT * FROM f_typetest(smallint '1');
SELECT * FROM f_typetest(1::int2);
SELECT * FROM f_typetest('1'::int2);

db<>violín aquí

Viejo sqlfiddle.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *