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 9442 게시물 읽기
No. 9442
libpq 라이브러리에서 precision, scale 값 가져오는 함수가 있나요?
작성자
김봉달(goofy2)
작성일
2014-05-12 11:26
조회수
10,813

지금 libpq를 사용해서 postgreSQL이랑 연동하는 C 프로그램을 개발하고 있는데

 

numeric(5,3) 인 컬럼의 precision, scale 값을 가져올 수 있는 방법이 있나요??

 

http://www.postgresql.org/message-id/3C04FF9A.44EDDF70@redhat.com

 

위의 글을 보면 PQfscale, PQfprecision 이라는 함수가 있는 것 같은데...

 

제가 쓰는 8.2버전의 libpq 라이브러리에는 위의 함수가 없더라구요..ㅠㅠ

 

방법좀 알려주시기 바랍니다. ㅠ

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

PQfmod() 함수 아닌가요?

libpq를 직접 쓰는 일이 거의 없어서....

 

김상기(ioseph)님이 2014-05-12 11:36에 작성한 댓글입니다.

 PQfmod() 잠깐 사용을 해보니, 

그냥 어떤 정수값만 던지네요. 

이것을 다시, 

사람이 알수 있는 형태로 바꾸려면, 

서버에게 SQL로

select format_type(자료형oid, fmod값)

형태로 다시 물어봐야 하네요. 

 

정확하게 percision, scale을 따로 구하고싶다면, 

information_schema 안에 있는 내장 함수를 사용해야 할 것 같네요. 

select information_schema._pg_numeric_percision(자료형, fmod값)

똑같이 _pg_numeric_scale() 함수를 사용하면 됩니다. 

 

제가 보기에는 해당 서버(8.2)의 share 디렉토리에 보면, information_schema.sql 이라는 스크립트가 있습니다. 이 스크립트의 percision, scale 함수를 해당 응용프로그램으로 하나 만드는게 좋을 것 같네요. 

즉, 자료형이 numeric이라면, 직접 만든 함수로 percision과, scale을 구한다. 이런식으로. 

 

이 모든게 귀찮다면, 위와 같이 직접 각각 서버 쪽에 물어봐야 정확한 값을 구할 수 있을 것 같습니다. 

 

9.3 용 information_schema에서 살펴보니 

간단하네요. 

percision은 

 (($2 - 4) >> 16) & 65535

scale은 

 ($2 - 4) & 65535

네요 

그냥 define으로 간단하게 응용 프로그램 해더에 정의만 해두면 되겠네요.

 

김상기(ioseph)님이 2014-05-12 13:47에 작성한 댓글입니다.
이 댓글은 2014-05-12 14:02에 마지막으로 수정되었습니다.

김상기님 답변 감사합니다.

 

information_schema.sql 내에 있는 _pg_numeric_precision 함수를 응용해서

 

define 해서 구현해야 겠네요~ ㅎㅎ 정말 감사합니다^^

김봉달(goofy2)님이 2014-05-12 15:06에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9447PostgreSQL Korea User Conference 2014 [3]
김상기
2014-07-03
10479
9444Replication 을 시도하려는데 키워드좀 제시부탁드려요. [2]
지우개
2014-05-31
11582
9443. [3]
강동윤
2014-05-13
12238
9442libpq 라이브러리에서 precision, scale 값 가져오는 함수가 있나요? [3]
김봉달
2014-05-12
10813
9441오늘처음접해봅니다.. [5]
박경일
2014-05-09
12039
9440유니크한 컬럼이 없는 경우 인덱스는? [1]
박병호
2014-05-08
10752
9439libpq 라이브러리를 이용한 SELECT 프로그램 개발관련 조언좀 부탁드리겠습니다. [2]
김봉달
2014-05-08
10831
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.028초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다