'How to declare variable in PostgreSQL [duplicate]
I try to declare a variable in a code like this:
DECLARE
p_country VARCHAR;
p_country : = '';
SELECT p_country;
But it's doesn't work:
ERROR: syntax error at or near "VARCHAR" LINE 2: p_country VARCHAR;
Can you tell me what's the problem?
Solution 1:[1]
Create a new setting in postgresql.conf for custom_variable_classes:
custom_variable_classes = 'var'
Reload the config, you now have the variable "var" available in all your databases.
To create the variable p_country, just use SET:
SET var.p_country = 'US';
SELECT current_setting('var.p_country') AS p_country;
It's not a beauty, but it works.
Solution 2:[2]
Within a PL/pgSQL function you can declare variables like this:
CREATE FUNCTION identifier (arguments) RETURNS type AS '
DECLARE
-- Declare an integer.
subject_id INTEGER;
-- Declare a variable length character.
book_title VARCHAR(10);
-- Declare a floating point number.
book_price FLOAT;
BEGIN
statements
END;
' LANGUAGE 'plpgsql';
Solution 3:[3]
PL/pgSQL
I had the same problem as you. Turns out, the DECLARE statement is something from an entire different language PL/pgSQL. See https://www.postgresql.org/docs/14/plpgsql.html
PostgreSQL
To achieve this with PostgreSQL, you can do the following:
WITH myconstants (p_country) as (
values ('')
)
SELECT p_country FROM myconstants;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | devoured elysium |
Solution 2 | Wolph |
Solution 3 | a_horse_with_no_name |