Back

Explore Courses Blog Tutorials Interview Questions
0 votes
1 view
in SQL by (20.3k points)

In MS SQL Server, I create my scripts to use customizable variables:

DECLARE @somevariable int  

SELECT @somevariable = -1

INSERT INTO foo VALUES ( @somevariable )

I'll then change the value of @somevariable at runtime, depending on the value that I want in a particular situation. Since it's at the top of the script it's easy to see and remember.

How do I do the same with the PostgreSQL client psql?

1 Answer

0 votes
by (40.4k points)

Postgres variables can be created by using the \set command, like this :

\set myvariable value

 Then, it can be substituted, this way:

SELECT * FROM :myvariable.table1;

Or 

SELECT * FROM table1 WHERE :myvariable IS NULL;

edit: In psql 9.1, variables can be expanded in quotes as in:

\set myvariable value 

SELECT * FROM table1 WHERE column1 = :'myvariable';

In older versions of the psql client: If you want to use the variable as the value in a conditional string query, like this :

SELECT * FROM table1 WHERE column1 = ':myvariable';

Then you must include the quotes in the variable itself as the above query will not work. 

Instead, you can define your variable like this:

\set myvariable 'value'

However, if you want to make the string from an existing variable, Then use this:

\set quoted_myvariable '\'' :myvariable '\''

Now you are having both the quoted and unquoted variable of the same string! And you can do in the similar manner  :

INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;

Related questions

0 votes
1 answer
0 votes
1 answer
0 votes
1 answer
asked Jul 23, 2019 in SQL by Tech4ever (20.3k points)
Welcome to Intellipaat Community. Get your technical queries answered by top developers!

28.4k questions

29.7k answers

500 comments

94.1k users

Browse Categories

...