ตัวแปรในการ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)