es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Procedimiento para actualizar columnas seleccionadas en una tabla.

POSTGRESQL

Antecedentes del caso: Existe una tabla llamada MasterSIM a la que se deben agregar detalles usando un archivo .csv a través de Nodered.

CREATE OR REPLACE PROCEDURE "master<em>SIMs".simiccidlink1(IMEI bigint, iccid text, phonenumber bigint,  apn text, "Operator" text, isesim boolean, ism2m boolean, mdi bigint, imsi integer)
LANGUAGE 'plpgsql' AS 
$BODY$
declare
-- retval text
begin 
if (length(IMEI) = 15) then
    if (master</em>packs.luhn<em>verify(IMEI) is True) then
        update "master</em>SIMs".list SET "ICCID" = iccid, "phoneNumber" = phonenumber, "APN" = apn, "operator" = "Operator", "isESIM" = isesim, "isM2M" = ism2m, "MDI" = mdi, "IMSI" = imsi where IMEI = "serialNumber"; 
    end if;
end if;
end;
$BODY$;

LLAME a "master<em>SIMs".simiccidlink1(352277818466409, 'iccid1', '8018466080', 'apn1', 'operator1', '0', '0', 123456789987653, 12354);
SELECT * FROM "master</em>SIMs".list;

El error que obtengo es:
ERROR: la función masterSIMs.simiccidlink1(desconocido, desconocido, desconocido, desconocido, entero, entero, entero, entero, bigint) no existe
LINEA 2: LLAME “master
SIMs”.simiccidlink1(‘iccid1’, ‘8018466080’, ‘ap…
^
SUGERENCIA: Ninguna función coincide con el nombre y los tipos de argumentos proporcionados. Es posible que tenga que agregar conversiones de tipo explícitas.
Estado SQL: 42883
Carácter: 7

Soy nuevo en esto, por favor ORIENTAR.
He intentado todas las formas posibles para solucionarlo.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    A partir del mensaje de error, parece que hay una falta de coincidencia entre los parámetros de entrada en la instrucción de llamada y los parámetros reales que espera el procedimiento almacenado. Específicamente, el primer parámetro del procedimiento almacenado espera un bigint, mientras que el primer parámetro en la instrucción de llamada es un texto.

    Para solucionarlo, debes asegurarte de que los parámetros en la instrucción de llamada coincidan con los tipos de datos esperados del procedimiento almacenado. En este caso, puedes cambiar el primer parámetro en la instrucción de llamada de un texto a un bigint:

    CALL "master_SIMs".simiccidlink1(352277818466409, 'iccid1', '8018466080', 'apn1', 'operator1', '0', '0', 123456789987653, 12354);
    

    Si todavía hay errores después de esto, verifica que los parámetros estén en el orden correcto y que no haya errores tipográficos o parámetros faltantes.

Comments are closed.