Variables en psql
chupar. Si desea declarar un número entero, debe ingresar el número entero, luego hacer un retorno de carro, luego finalizar la declaración en punto y coma. Observar:
Digamos que quiero declarar una variable entera my_var
e insertarla en una tabla test
:
Tabla de ejemplo 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)
Claramente, nada en esta tabla todavía:
thedatabase=# select * from test;
id
----
(0 rows)
Declaramos una variable. ¡Observe cómo está el punto y coma en la siguiente línea!
thedatabase=# \set my_var 999
thedatabase=# ;
Ahora podemos insertar. Tenemos que usar esta extraña " :''
" sintaxis de aspecto:
thedatabase=# insert into test(id) values (:'my_var');
INSERT 0 1
¡Funcionó!
thedatabase=# select * from test;
id
-----
999
(1 row)
Explicación:
Entonces ... ¿qué pasa si no tenemos el punto y coma en la siguiente línea? ¿La variable? Echar un vistazo:
Declaramos my_var
sin la nueva línea.
thedatabase=# \set my_var 999;
Vamos a seleccionar my_var
.
thedatabase=# select :'my_var';
?column?
----------
999;
(1 row)
¿Que demonios es eso? ¡No es un entero , es una cadena 999;
!
thedatabase=# select 999;
?column?
----------
999
(1 row)