'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';

Source: http://www.commandprompt.com/ppbook/x19832

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