database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 10177 게시물 읽기
No. 10177
plpgsql 에서 세션변수 설정
작성자
궁금
작성일
2020-08-24 18:06ⓒ
2020-08-24 18:16ⓜ
조회수
1,929

 

pg v12에서 프로시저 내부에 세션변수를 설정하려고 했습니다만

insert 에는 변수값이 제대로 들어가는 반면,

set session 부분에서는 내부에서 선언한 변수값이 들어가지 않았습니다.

 

-------------------------------------------------------------------------------------------------------------

create table test2 (no serial, c1 numeric(10), c2 numeric(10));

insert into test2(c1,c2) values(generate_series(1,10), generate_series(101,110));

 

create or replace procedure abc()

language plpgsql as $$

declare

i  numeric(8)   := 0;

v_c1   := coalesce(111::numeric(10),0);

 

insert into test2 (c1) values(v_c1);

set session test2.vc1 = v_c1;

end;

$$;

 

 

begin;

call abc();

select * from test2;         :   v_c1 변수 값(111)으로 insert 

select current_setting('test2.vc1');     :   111 이 아닌 텍스트 그대로(v_c1) 입력 됨

---------------------------------------------------------------------------------------------------------

어느 부분이 잘못된 걸까요? 이퀄(=) 구문엔 변수가 안먹히는건지요..?

의견을 부탁드립니다.

 

 

이 글에 대한 댓글이 총 2건 있습니다.

set 명령 뒤에 오는 값은 상수값이어야합니다.

윗 구문 처럼 하면, 그 값이 'v_c1' 이라는 문자열이 지정되네요.

execute 구문을 이용해서 동적 쿼리로 실행해야겠네요.

execute 'set session test2.vc1 = ' || v_c1;
 

 

김상기(ioseph)님이 2020-08-25 10:15에 작성한 댓글입니다.

도움 감사드립니다

궁금님이 2020-08-26 16:07에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
10180postgressql bytea[] 타입 [4]
김철수
2020-09-10
2302
10179파티션테이블 바인드변수 처리 [2]
궁금
2020-09-08
1894
10178datacamp를 통한 sql 입문 [1]
달려라펀치맨
2020-09-06
1675
10177plpgsql 에서 세션변수 설정 [2]
궁금
2020-08-24
1929
10176postgresql 의 json 타입 관련하여 문의드립니다. [2]
Jaemyoung Seo
2020-08-24
2435
10174PostgreSql설치시 경로변경 [1]
축구선수
2020-08-14
1790
10173pg_wal 디렉토리 변경 [2]
포스그래맨
2020-08-13
1756
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.050초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다