Я пытаюсь протестировать некоторый код, и было бы здорово, если бы был способ RAISE NOTICE
, как я сделал бы с print()
или console.log()
.
вот моя попытка, но не уверен, как это работает:
DO
$cols$
DECLARE
qty_cols INT := 3;
current_month INT := ( SELECT EXTRACT(MONTH FROM DATE(NOW())) );
month_col INT;
BEGIN
FOR month_col IN 1..qty_cols LOOP
IF current_month < (month_col+1) THEN
--RAISE NOTICE (12+current_month) - month_col;
RAISE NOTICE '%', (12+current_month) - month_col;
ELSE
--RAISE NOTICE (current_month - month_col);
RAISE NOTICE '%', (12+current_month) - month_col;
END IF;
END LOOP;
END
$cols$;
я знаю, что могу использовать символы %
для замены переменных, но это не похоже на просто замену переменной...
RAISE NOTICE ожидает следующий аргумент, представляющий собой строку формата с заполнителями %
, в которую будут помещены последующие аргументы. Последующие аргументы могут быть вычислениями
After level if any, you can write a format (which must be a simple string literal, not an expression). The format string specifies the error message text to be reported. The format string can be followed by optional argument expressions to be inserted into the message. Inside the format string, % is replaced by the string representation of the next optional argument's value. Write %% to emit a literal %. The number of arguments must match the number of % placeholders in the format string, or an error is raised during the compilation of the function.
Минимально строка формата для одного последующего аргумента будет выглядеть так:
RAISE NOTICE '%', (12+current_month) - month_col;
Хотя намерение, возможно, состоит в том, чтобы быть более описательным:
RAISE NOTICE 'The month difference is %', (12+current_month) - month_col;
@CaiusJard сделал это, чувак, спасибо!