Ich bitte um Ihre Hilfe mit einer Funktion, an die ich Suchparameter senden muss. Aber das Problem ist, dass die Funktion über einen DBlink ausgeführt wird, und ich muss 2 Werte als Suchparameter übergeben, und bei der Ausführung werden die Werte nicht gesendet. Postgres Funktionen mit Parametern und dblink
Dies ist die Funktion ohne dblink:
`CREATE OR REPLACE FUNCTION sp_get_afil(i_pers_codigo VARCHAR, i_empr_codigo
VARCHAR) RETURNS VARCHAR AS $$
DECLARE
v_pers_codigo VARCHAR;
BEGIN
select ro.pers_codigo
into v_pers_codigo
from unv_roles_personas ro, unv_personas p1, unv_personas p
where ro.rope_vigente = 'S'
and ro.empr_codigo = p1.empr_codigo
and ro.tiro_codigo = 'AFIL'
and ro.pers_codigo = p1.pers_codigo
and p1.empr_codigo = p.empr_codigo
and p1.pers_estado_cae = p.pers_estado_cae
and p1.pers_numero_cae = p.pers_numero_cae
and p.empr_codigo = i_empr_codigo
and p.pers_codigo = i_pers_codigo;
RETURN v_pers_codigo;
END;
$$ LANGUAGE plpgsql;`
Es funktioniert ohne Probleme, und hier ist die gleiche Funktion, aber mit dblink, die nicht funktioniert:
`CREATE OR REPLACE FUNCTION sp_get_afil(i_pers_codigo VARCHAR, i_empr_codigo
VARCHAR) RETURNS VARCHAR AS $$
DECLARE
v_pers_codigo VARCHAR;
v_empr_codigo VARCHAR;
vr_pers_codigo VARCHAR;
BEGIN
select t1.rop_codigo
into vr_pers_codigo
from dblink('dbname = usuarios host=100.1.1.138 port=5432 ',
'select ro.pers_codigo
from unv_roles_personas ro, unv_personas p1, unv_personas p
where ro.rope_vigente = ''S''
and ro.empr_codigo = p1.empr_codigo
and ro.tiro_codigo = ''AFIL''
and ro.pers_codigo = p1.pers_codigo
and p1.empr_codigo = p.empr_codigo
and p1.pers_estado_cae = p.pers_estado_cae
and p1.pers_numero_cae = p.pers_numero_cae
and p.empr_codigo = '||quote_literal ($1)||'
and p.pers_codigo = '||quote_literal ($2)||'')
as t1 (rop_codigo character varying);
RETURN vr_pers_codigo;
END;
$$ LANGUAGE plpgsql;`
Bei der Ausführung gibt es einen Nullwert zurück, und dies generiert nicht die Ansicht, die ich brauche. Mir geht es schlecht, ich habe nachgeforscht, aber ich bin schon in einer Sackgasse.
Danke, leider ist es das gleiche Ergebnis, es gibt den Nullwert zurück. –
hm. ohne reproduzierbare env, Es ist schwer zu sagen, warum Sie dann null haben –