PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

użyj \set zmiennej wewnątrz plpgsql zadeklaruj blok

Wyjaśnienie jest, zgodnie z instrukcją :

Treść DO oświadczenie jest ciągiem w cudzysłowie w dolarach. Więc nie ma interpolacji wewnątrz ciągu.

Ponieważ musi to być dosłowny ciąg, nie można również łączyć ciągów w locie. Instrukcja:

Ale możesz połączyć ciąg, a następnie go wykonać.

Moje odważne podkreślenie. Musisz tylko poprawnie cytować:

test=# \set test 'some value'
test=# \set code 'DECLARE v_test text := ' :'test' '; BEGIN RAISE NOTICE ''test var is: %'', v_test; END'
test=# DO :'code';
NOTICE: test var is: some value
DO
test=#

Ale wolałbym utworzyć funkcję (tymczasową) i przekazać wartość jako parametr (gdzie działa interpolacja psql). Szczegóły w tej powiązanej odpowiedzi na dba.SE:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BŁĄD:funkcja unnest(integer[]) nie istnieje w postgresql

  2. BŁĄD:kolumna relacji nie istnieje PostgreSQL ,Nie można uruchomić zapytania wstawiania

  3. Jak jawnie rzutować typ literału tablicowego w sqlalchemy za pomocą postgresql?

  4. Czy usunięcie bazy danych nie musi odbywać się w żadnej transakcji?

  5. Błąd na ALTER TYPE w relacji postgres nie istnieje