私は検索パラメータを送信する必要がある機能について助力を求める。しかし問題は、関数がDBリンクを介して実行され、検索パラメータとして2つの値を渡す必要があり、実行するときに値を送信しないということです。postgresのパラメータとdblinkの機能
これは、データベース・リンクのない関数である:それは問題なく動作し、ここで同じ機能が、動作しないの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;`
:
`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;`
これを実行すると、null値が返され、必要なビューが生成されません。私はひどくやっている、私は調査したが、私はすでにデッドロックしている。
残念ながら、それは同じ結果であり、それはnull値を返し、ありがとうございます。 –
hm。再現可能なenvなしで、あなたがなぜヌルを持っているのかを言うのは難しい –