Змінні в psql
смоктанні. Якщо ви хочете оголосити ціле число, вам потрібно ввести ціле число, потім зробити повернення каретки, а потім закінчити операцію крапкою з комою. Дотримуйтесь:
Скажімо, я хочу оголосити цілу змінну my_var
і вставити її в таблицюtest
:
Приклад таблиці 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)
Зрозуміло, що в цій таблиці ще нічого:
thedatabase=# select * from test;
id
----
(0 rows)
Ми оголошуємо змінну. Зверніть увагу, як крапка з комою знаходиться у наступному рядку!
thedatabase=# \set my_var 999
thedatabase=# ;
Тепер ми можемо вставити. Ми повинні використовувати цей дивний :''
синтаксис, що " " виглядає:
thedatabase=# insert into test(id) values (:'my_var');
INSERT 0 1
Це спрацювало!
thedatabase=# select * from test;
id
-----
999
(1 row)
Пояснення:
Отже ... що станеться, якщо у наступному рядку у нас немає крапки з комою? Змінна? Подивитися:
Ми заявляємо my_var
без нового рядка.
thedatabase=# \set my_var 999;
Виберемо my_var
.
thedatabase=# select :'my_var';
?column?
----------
999;
(1 row)
WTF це? Це не ціле число , це рядок 999;
!
thedatabase=# select 999;
?column?
----------
999
(1 row)