1
我搜索了這個沒有多少運氣...我希望你能幫助我...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 – 2014-10-02 00:27:14