я искал для этого без особой удачи ... Я надеюсь, что вы можете мне помочь ...Postgresql Ошибка 42883 при выполнении пользовательской функции
Это мой PL/функция PGSQL:
CREATE OR REPLACE FUNCTION crearempresa(
_id_empresa integer DEFAULT NULL::integer,
_ci_rif character varying DEFAULT NULL::character varying,
_nombre character varying DEFAULT NULL::character varying,
_persona_contacto character varying DEFAULT NULL::character varying,
_telefono_movil character varying DEFAULT NULL::character varying,
_telefono_oficina character varying DEFAULT NULL::character varying,
_fax character varying DEFAULT NULL::character varying,
_email character varying DEFAULT NULL::character varying,
_email_alterno character varying DEFAULT NULL::character varying,
_direccion character varying DEFAULT NULL::character varying,
_tipoempresa character varying DEFAULT NULL::character varying,
_cod_usuario integer DEFAULT NULL::integer,
_estado_registro integer DEFAULT NULL::integer
)
RETURNS character varying AS
$BODY$
DECLARE
retorno character varying;
BEGIN
IF _id_empresa = 0 THEN
_id_empresa = NULL;
END IF;
IF (select id_empresa from empresa where id_empresa = _id_empresa) is null THEN
IF (Select MAX(id_empresa) from empresa) is null THEN
_id_empresa = 1;
ELSE
_id_empresa = (Select MAX(id_empresa) + 1 from empresa);
END IF;
insert into empresa (
id_empresa,ci_rif,nombre,persona_contacto,telefono_movil,telefono_oficina,fax,email,
email_alterno,direccion,id_tipo_empresa,cod_usuario,fecha_creacion,fecha_actualizacion,estado_registro)
values (
_id_empresa,_ci_rif,_nombre,_persona_contacto,_telefono_movil,_telefono_oficina,_fax,_email,
_email_alterno,_direccion,_tipoempresa,_cod_usuario,CURRENT_DATE,CURRENT_DATE,_estado_registro);
retorno = '1';
ELSE
Update empresa
set ci_rif = _ci_rif,
nombre = _nombre,
persona_contacto = _persona_contacto,
telefono_movil = _telefono_movil,
telefono_oficina = _telefono_oficina,
fax = _fax,
email = _email,
email_alterno = _email_alterno,
direccion = _direccion,
id_tipo_empresa = _tipoempresa,
cod_usuario = _cod_usuario,
fecha_actualizacion = CURRENT_DATE,
estado_registro = _estado_registro
where id_empresa = _id_empresa;
retorno = '2';
END IF;
RETURN retorno;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100;
Это было создано в порядке, потому что я могу видеть функцию внутри «функций» папка, в pgAdminIII:
я, когда я пытаюсь проверить функцию с помощью:
select crearempresa (1,'a','f','a','b','c','d','e','f','g',4,1,1);
Я получаю следующее сообщение об ошибке:
ERROR: no existe la función crearempresa(integer, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, integer, integer, integer)
LINE 1: select crearempresa (1,'a','f','a','b','c','d','e','f','g',4...
^
HINT: Ninguna función coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos.
********** Error **********
ERROR: no existe la función crearempresa(integer, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, unknown, integer, integer, integer)
SQL state: 42883
Hint: Ninguna función coincide en el nombre y tipos de argumentos. Puede ser necesario agregar conversión explícita de tipos.
Character: 8
Я просто не знаю, какой из них является правильным Подход, чтобы решить эту проблему. Похоже, что PostgreSQL не может найти функцию, даже если она уже создана, как вы можете видеть на картинке. Или, может быть, это как-то связано с типами данных, но я просто не могу понять, почему, потому что в определении функции типы данных равны параметрам вызова функции. Кроме того, у меня уже есть много функций, подобных этому, и все работало нормально ...
Надеется, что вы можете помочь мне понять это ...
Спасибо заранее!
Это была настоящая ошибка! Я меняю его на целое, и он сработал! Спасибо Крейг Рингер! Когда я это сделал, было почти полночь, и я не мог видеть эту ошибку! XD –