开发者

How to declare variable in PostgreSQL [duplicate]

This question already has answers here: How to declare a variable in a PostgreSQL query (15 answers) Closed 8 months ago.

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:

开发者_StackOverflow社区
ERROR:  syntax error at or near "VARCHAR"
LINE 2:  p_country VARCHAR;

Can you tell me what's the problem?


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.


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


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜