我遇到了最奇怪的问题。 我们有一个通过cron作业运行的plpgsql脚本。它遍历一系列记录并根据它们更新其他记录。之后,它将在记录表中插入一条记录,并通知它影响了多少条记录。 奇怪的是:如果将输出重定向到/ dev / null,脚本将运行,但不会影响任何记录。如果我们不重定向,它将正常工作。
crontab行的读取方式如下:
* / 10 * * * * psql -Upostgres -d pje_pi_2g -f /root/atos2g.sql> / dev / null
这是脚本:
DO
$$
DECLARE mudar record ; qt INT = 0 ;
BEGIN
FOR mudar IN SELECT
vi.id_,
pd.id_processo_documento
FROM
jbpm_variableinstance vi
JOIN jbpm_processinstance pi ON pi.id_ = vi.processinstance_
AND pi.end_ IS NULL
JOIN core.tb_processo_instance ppi ON ppi.id_proc_inst = pi.id_
JOIN jbpm_taskinstance ti ON ti.procinst_ = pi.id_
AND ti.end_ IS NULL
AND ti.name_ IN (
'Cumprir determinações [CD]',
'Cumprir determinações (urgência) [CD]',
'Ato judicial assinado [PREC]',
'Processos recebidos sem cálculo [PREC]',
'Triagem (financeiro) [PREC]',
'Triagem (secretaria) [PREC]',
'Triagem (cálculo) [PREC]',
'Cumprir determinações [CDPREC]',
'Acórdão assinado [BC2G]',
'Lançar movimentações do julgamento [DCG2G]'
)
JOIN core.tb_processo prc ON prc.id_processo = ppi.id_processo
JOIN core.tb_processo_documento pd ON pd.id_processo = prc.id_processo
AND pd.id_processo_documento = (
SELECT
pd1.id_processo_documento
FROM
core.tb_processo_documento pd1
JOIN core.tb_processo_documento_bin bin ON pd1.id_processo_documento_bin = bin.id_processo_documento_bin
JOIN client.tb_proc_doc_bin_pess_assin ass ON bin.id_processo_documento_bin = ass.id_processo_documento_bin
JOIN client.tb_pessoa_magistrado pm ON pm. ID = ass.id_pessoa
WHERE
pd1.id_processo = prc.id_processo
ORDER BY
pd1.dt_juntada DESC
LIMIT 1
)
WHERE
vi.name_ = 'pje:atoProferido'
AND vi.longvalue_ <> pd.id_processo_documento loop
qt := qt + 1 ;
UPDATE jbpm_variableinstance
SET longvalue_ = mudar.id_processo_documento
WHERE
id_ = mudar.id_ ;
END loop ;
INSERT INTO tjpi.tb_scripts_log (ds_script, qt_afetados)
VALUES
('Atos proferidos', qt) ;
END ;
如果我们这样运行它,则它不会遍历任何行。如果我们删除重定向,它将正确循环。 有人知道我们应该寻找什么吗? 时间上:我尝试手动运行psql命令,它仍然只能在不重定向的情况下运行。 在此先感谢您,并为很长的问题感到抱歉。