Variabili in psql
succhiare. Se si desidera dichiarare un numero intero, è necessario immettere il numero intero, quindi eseguire un ritorno a capo, quindi terminare l'istruzione in punto e virgola. Osservare:
Diciamo che voglio dichiarare una variabile intera my_var
e inserirla in una tabella test
:
Tabella di esempio test
:
thedatabase=# \d test;
Table "public.test"
Column | Type | Modifiers
--------+---------+---------------------------------------------------
id | integer | not null default nextval('test_id_seq'::regclass)
Indexes:
"test_pkey" PRIMARY KEY, btree (id)
Chiaramente, nulla in questa tabella ancora:
thedatabase=# select * from test;
id
----
(0 rows)
Dichiariamo una variabile. Nota come è il punto e virgola nella riga successiva!
thedatabase=# \set my_var 999
thedatabase=# ;
Ora possiamo inserire. Dobbiamo usare questa " :''
" sintassi dall'aspetto strano :
thedatabase=# insert into test(id) values (:'my_var');
INSERT 0 1
Ha funzionato!
thedatabase=# select * from test;
id
-----
999
(1 row)
Spiegazione:
Quindi ... cosa succede se non abbiamo il punto e virgola nella riga successiva? La variabile? Dare un'occhiata:
Dichiariamo my_var
senza la nuova linea.
thedatabase=# \set my_var 999;
Selezioniamo my_var
.
thedatabase=# select :'my_var';
?column?
----------
999;
(1 row)
Che cos'è questo? Non è un numero intero , è una stringa 999;
!
thedatabase=# select 999;
?column?
----------
999
(1 row)