在shell脚本中调用pl/pgsql代码块 do $$时出现ERROR
echo "BEGINNING OF $0 `date +'%Y-%m-%d %H:%M:%S'`"
echo "plpgsql running"
psql -h ${POSTGIS_IP} -U ${PGUSER} -d ${POSTGIS_DB_NAME} <<EOF
CALL public.pp();
CALL public.cc();
update aa set bb=1;
do $$
declare
rowcount integer;
BEGIN
update aa set bb=1;
get diagnostics rowcount := row_count;
raise notice 'update bts count is % ',rowcount;
IF rowcount < 100 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END;
$$ LANGUAGE 'plpgsql';
EOF
echo "END OF $0 ("`date +'%y-%m-%d %H:%M:%S'`")"
发现是调用时出错,需在$ $ 前加 \ 直接在shell脚本中调用,穿插调用存储过程,正常sql及do $ $ 代码块
echo "BEGINNING OF $0 `date +'%Y-%m-%d %H:%M:%S'`"
echo "plpgsql running"
psql -h ${POSTGIS_IP} -U ${PGUSER} -d ${POSTGIS_DB_NAME} <<EOF
CALL public.pp();
CALL public.cc();
update aa set bb=1;
do \$$
declare
rowcount integer;
BEGIN
update aa set bb=1;
get diagnostics rowcount := row_count;
raise notice 'update bts count is % ',rowcount;
IF rowcount < 100 THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END;
\$$ LANGUAGE 'plpgsql';
EOF
echo "END OF $0 ("`date +'%y-%m-%d %H:%M:%S'`")"