PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

задайте променлива само в psql-скрипт, ако не е посочена в командния ред

Задаването на стойности по подразбиране за променливи не се поддържа в psql, но можете да го направите, като използвате заобиколно решение.

Тази psql команда:

\set myVar :myVar

не прави нищо, ако променливата вече е зададена чрез psql (това означава, че myVar е зададен отново на своята стойност), в противен случай променливата е зададена буквално на низа :myVar .

Използвайки това обстоятелство и другата psql команда \gset , всъщност можете да зададете стойност по подразбиране за myVar. Поставете това в горната част на вашия sql скрипт:

\set myVar :myVar
-- now myVar is set to the string ':myVar' if was not already set.
-- Checking it using a CASE statement:
SELECT CASE 
  WHEN :'myVar'= ':myVar'
  THEN 'default_value' 
  ELSE :'myVar' 
END AS "myVar"  \gset -- < \gset call at end of the query

Изглежда, че работи само с текстови променливи, но можете да прехвърлите към числови, ако имате нужда от числови променливи:

SELECT CASE 
  WHEN :'myVar'= ':myVar'
  THEN '10' 
  ELSE :'myVar' 
END::numeric AS "myVar"  \gset

Как работи \gset:

\gset ви позволява да зададете променлива от резултата от заявка за избор. Резултатната променлива е наименувана като името на колоната, ето защо имате нужда от клаузата AS "myVar" в края на заявката (не забравяйте двойните кавички, ако искате да използвате имена на променливи с главни букви).

Например командата:

SELECT 'hello' AS var1 \gset

задава променливата var1 до hello , същото като

\set var1 hello

Вижте тук за повече информация:http://www.postgresql.org /docs/9.4/static/app-psql.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ScaleGrid PostgreSQL на VMware Cloud Infrastructure

  2. PostgreSQL - Препратки към външни ключове Взаимно изключващи се таблици

  3. Функция за премахване на акценти в postgreSQL

  4. Как да направя подзаявка на Postgresql в клауза за избор с клауза за присъединяване от като SQL Server?

  5. PostgreSQL не приема псевдоним на колона в клаузата WHERE