Variables dans psql
sucer. Si vous voulez déclarer un entier, vous devez entrer l'entier, puis faire un retour chariot, puis terminer l'instruction par un point-virgule. Observer:
Disons que je veux déclarer une variable entière my_var
et l'insérer dans une table test
:
Exemple de tableau 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)
Clairement, rien dans ce tableau pour le moment:
thedatabase=# select * from test;
id
----
(0 rows)
Nous déclarons une variable. Remarquez comment le point-virgule est sur la ligne suivante!
thedatabase=# \set my_var 999
thedatabase=# ;
Maintenant, nous pouvons insérer. Nous devons utiliser cette étrange :''
syntaxe " ":
thedatabase=# insert into test(id) values (:'my_var');
INSERT 0 1
Ça a marché!
thedatabase=# select * from test;
id
-----
999
(1 row)
Explication:
Alors ... que se passe-t-il si nous n'avons pas le point-virgule sur la ligne suivante? La variable? Regarde:
Nous déclarons my_var
sans la nouvelle ligne.
thedatabase=# \set my_var 999;
Sélectionnons my_var
.
thedatabase=# select :'my_var';
?column?
----------
999;
(1 row)
WTF est-ce? Ce n'est pas un entier , c'est une chaîne 999;
!
thedatabase=# select 999;
?column?
----------
999
(1 row)