의 변수 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)