Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

User defined variables in PostgreSQL

I have the following MySQL script which I want to implement in PostgreSQL.

 SET @statement = search_address_query;
      PREPARE dynquery FROM @statement;
      EXECUTE dynquery;
      DEALLOCATE PREPARE dynquery;

How can I define user defined variable "@statement" using PostgreSQL.

like image 570
ishk Avatar asked Jan 10 '13 15:01

ishk


1 Answers

Postgres does not normally use variables in plain SQL. But you can do that, too:

SET foo.test = 'SELECT bar FROM baz';

SELECT current_setting('foo.test');

Read about Customized Options in the manual.

In PostgreSQL 9.1 or earlier you needed to declare custom_variable_classes before you could use that.

However, You cannot EXECUTE dynamic SQL without a PL (procedural language). You would use a DO command for executing ad-hoc statements (but you cannot return data from it). Or use CREATE FUNCTION to create a function that executes dynamic SQL (and can return data in any fashion imaginable).

Be sure to safeguard against SQL injection when using dynamic SQL.

Related:

  • Is there a way to define a named constant in a PostgreSQL query?
like image 74
Erwin Brandstetter Avatar answered Oct 07 '22 22:10

Erwin Brandstetter