2017-02-24 5 views
0

Ich habe dieses Problem, wenn ich versuche, den folgenden Code auszuführen:ERROR: Syntaxfehler bei oder in der Nähe von "TABLE"

CREATE OR REPLACE FUNCTION USP_IP_CREA_EMPRESA_CATEGORIA 
(p_nombre td_nombre_extenso 
,p_codigoEmpresa td_codigo10 
,p_codigoPadre int 
,p_orden int 
,p_muestraBoletin td_estado_auditoria 
,p_categoriaDefecto td_estado_auditoria 
,p_envioAutomatico td_estado_auditoria 
,p_envioDirecto td_estado_auditoria 
,p_usuario td_usuario_auditoria 
,p_direccionIp td_ip_auditoria 
) RETURNS VOID 
--WITH ENCRYPTION 
AS $$ 
    DECLARE v_ordenReal INT = (SELECT (max(num_orden) + 1) FROM IP_RE_EMPRESA_CATEGORIA WHERE cod_empresa = p_codigoEmpresa); 
v_ordenHijo INT = (SELECT (max(num_orden) + 1) FROM IP_RE_EMPRESA_CATEGORIA WHERE cod_empresa = p_codigoEmpresa and (id_padre = p_codigoPadre)); 
BEGIN 
IF p_orden = 0 and p_codigoPadre = 0 
THEN 
    p_orden := v_ordenReal; 
ELSE 
    p_orden := v_ordenHijo; 
END IF; 

DECLARE NuevoIdentity TABLE (id INT) 
INSERT INTO IP_RE_EMPRESA_CATEGORIA 
(
    des_nombre 
    , cod_empresa 
    , id_padre 
    , num_orden 
    , est_mostrar_boletin 
    , est_categoria_defecto 
    , est_envio_automatico 
    , est_envio_directo 
    , cod_usuario_registro 
    , des_ip_registro 
) 
OUTPUT INSERTED.id_categoria INTO NuevoIdentity(id) 
SELECT 
(
    p_nombre 
    , p_codigoEmpresa 
    , p_codigoPadre 
    , COALESCE(p_orden, 0) 
    , p_muestraBoletin 
    , p_categoriaDefecto 
    , p_envioAutomatico 
    , p_envioDirecto 
    , p_usuario 
    , p_direccionIp 
) 

SELECT id FROM NuevoIdentity; 
END; 

$$ LANGUAGE plpgsql; 

Schließlich wird die Version 9.6 von Postgresql geben Sie mir diesen Fehler:

 
ERROR: syntax error at or near "TABLE" 
LINE 27: DECLARE NuevoIdentity TABLE (id INT) 
           ^
CONTEXT: invalid type name "TABLE (id INT) 
    INSERT INTO IP_RE_EMPRESA_CATEGORIA 
    (
     des_nombre 
     , cod_empresa 
     , id_padre 
     , num_orden 
     , est_mostrar_boletin 
     , est_categoria_defecto 
     , est_envio_automatico 
     , est_envio_directo 
     , cod_usuario_registro 
     , des_ip_registro 
    ) 
    OUTPUT INSERTED.id_categoria INTO NuevoIdentity(id) 
    SELECT 
    (
     p_nombre 
     , p_codigoEmpresa 
     , p_codigoPadre 
     , COALESCE(p_orden, 0) 
     , p_muestraBoletin 
     , p_categoriaDefecto 
     , p_envioAutomatico 
     , p_envioDirecto 
     , p_usuario 
     , p_direccionIp 
    ) 

    SELECT id FROM NuevoIdentity" 
********** Error ********** 

ERROR: syntax error at or near "TABLE" 
SQL state: 42601 
Character: 814 
Context: invalid type name "TABLE (id INT) 
    INSERT INTO IP_RE_EMPRESA_CATEGORIA 
    (
     des_nombre 
     , cod_empresa 
     , id_padre 
     , num_orden 
     , est_mostrar_boletin 
     , est_categoria_defecto 
     , est_envio_automatico 
     , est_envio_directo 
     , cod_usuario_registro 
     , des_ip_registro 
    ) 
    OUTPUT INSERTED.id_categoria INTO NuevoIdentity(id) 
    SELECT 
    (
     p_nombre 
     , p_codigoEmpresa 
     , p_codigoPadre 
     , COALESCE(p_orden, 0) 
     , p_muestraBoletin 
     , p_categoriaDefecto 
     , p_envioAutomatico 
     , p_envioDirecto 
     , p_usuario 
     , p_direccionIp 
    ) 

    SELECT id FROM NuevoIdentity" 

Antwort

Verwandte Themen