我试图查询包含很多列的表,如debMonth1,debMonth2等,以获得满足需要处理数据的应用程序需求的结果。
从语法上讲,查询现在似乎没问题了,但我没有从中得到结果。它只是没有错误。
我认为我对列名有疑问?有人可以帮帮我吗?
DO $do$
DECLARE cmonth TEXT;
DECLARE dmonth TEXT;
BEGIN
FOR i IN 1..15 LOOP
cmonth = CONCAT('"credMonth' , i::text, '"');
dmonth = CONCAT('"debMonth' , i::text, '"');
EXECUTE
format('SELECT
"account", "FY", "setOfBooks", $1, $2, $3 AS "fiscalMonth"
FROM
"transaction_figures"
WHERE
"dataType" = ''(80)'' AND
($1 != ''0.00'' OR $2 != ''0.00'')')
USING cmonth, dmonth, i;
END LOOP;
END
$do$ LANGUAGE plpgsql;
答案 0 :(得分:0)
在plpgsql中执行的查询不会导致打印输出也不会发送到客户端。您必须迭代结果并对其执行某些操作,例如:
DO $do$
DECLARE cmonth TEXT;
DECLARE dmonth TEXT;
DECLARE r RECORD;
BEGIN
FOR i IN 1..15 LOOP
cmonth = CONCAT('"credMonth' , i::text, '"');
dmonth = CONCAT('"debMonth' , i::text, '"');
FOR r in
EXECUTE
format('SELECT
"account", "FY", "setOfBooks", $1, $2, $3 AS "fiscalMonth"
FROM
"transaction_figures"
WHERE
"dataType" = ''(80)'' AND
($1 != ''0.00'' OR $2 != ''0.00'')')
USING cmonth, dmonth, i
LOOP
RAISE NOTICE '%', r;
END LOOP;
END LOOP;
END
$do$ LANGUAGE plpgsql;
这将在psql中打印结果。如果您希望数据的行为类似于表(即发送到客户端),则必须将代码包装在plpgsql函数中并返回查询结果。