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
운영게시판
최근게시물
Oracle Q&A 1875 게시물 읽기
No. 1875
[pro*c] blob에서 텍스트 본문 뽑기 예제 올립니다. 소스랑 makefile
작성자
문태준
작성일
2000-10-29 11:05
조회수
17,192

pro*c에서 blob 컬럼에 있는 텍스트 본문 뽑는 예제입니다.

 

os : linux redhat 6.2

oracle : Oracle 8i 8.1.6

 

소스 가지고 열나게 고민할때는 안되더니 makefile 공부하고 나서 좀 고치니 간단히 수행되네요. 쩝. 역시 기본기없이 어설프게 접근하면 안되지요. 아뭏든 이것이 되니 기쁩니당~~

 

 

make -f Makefile.ora

 

# cat Makefile.ora

 

 

CC=gcc

 

TARGET = cgi_ora.c

ETC= $(TARGET)

ETCSRC= $(ETC:.o=.c)

OBJECTS= $(NPROGOBJS)

CSOURCES= $(OBJECTS:.o=.c)

PCSOURCES= $(OBJECTS:.o=.pc)

 

CFLAGS=-I$(ORACLE_HOME)/include

LDFLAGS = -L$(ORACLE_HOME)/lib

 

CFLAGS= -g

 

OTHERS=makefile

 

PRODUCTS=view.cgi

 

all : .pc.c view.cgi myrm

 

view.cgi :$(NPROGOBJS) $(ETC)

$(CC) -o $@ $(CFLAGS) $(NPROGOBJS) $(ETC) $(LDFLAGS) $(PROLDLIBS)

 

touch:

touch $(PCSOURCES) $(ETCSRC)

 

myrm :

/bin/rm tp* *.lis

 

copy :

cp $(PRODUCTS) /user/local/apache/cgi-bin

 

include $(ORACLE_HOME)/precomp/demo/proc/demo_proc.mk

 

.pc.c:

make -f $(ORACLE_HOME)/precomp/demo/proc/demo_proc.mk PCCSRC=cgi_ora.pc

I_SYM=include= pc1

 

.c.o:

$(CC) $(CFLAGS) -c $*.c

 

 

 

$ cat cgi_ora.pc <소스보기>

 

 

#include <oci.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <sqlca.h>

#include <sqlcpr.h>

/* Jaedy */

#include <sys/stat.h>

#include <sys/types.h>

#include <fcntl.h>

#include <unistd.h>

 

#define NON_EXISTENT -942

#define NOT_FOUND 1403

 

#define MAX_BUF 1000000

#define MAX_ERR_BUF 4096

 

void write_file(char *, OCIBlobLocator *);

void page_view(char *, char*, char*, char*, char*);

void MakeFile(char *, char*, char*);

 

EXEC SQL INCLUDE sqlca;

 

typedef struct long_varraw {

ub4 len;

text buf[1];

} long_varraw;

 

 

/* Type Equivalence long_varraw to LONG VARRAW.

* All variables of type long_varraw from this point

* on in the file will have external type 95 (LONG VARRAW)

* associated with them.

*/

EXEC SQL TYPE long_varraw IS LONG VARRAW REFERENCE;

 

 

unsigned char buff[MAX_BUF];

EXEC SQL VAR buff IS RAW(MAX_BUF);

 

void DB_error(char* routine){

char message_buffer[MAX_ERR_BUF];

size_t buffer_size;

size_t message_length;

 

EXEC SQL whenever sqlerror continue;

 

fprintf(stderr, "Oracle error while executing %s!\n", routine);

 

buffer_size = sizeof(message_buffer);

sqlglm(message_buffer, &buffer_size, &message_length);

printf("%.*s\n", message_length, message_buffer);

 

EXEC SQL ROLLBACK WORK RELEASE;

exit(1);

}

 

void DB_connect(szUid)

EXEC SQL BEGIN DECLARE SECTION;

char szUid[100];

EXEC SQL END DECLARE SECTION;

{

EXEC SQL whenever sqlerror do DB_error("connect");

EXEC SQL connect :szUid;

 

if(sqlca.sqlcode != 0)

DB_error("Connecting...DB");

}

 

 

void main()

{

OCIBlobLocator *blob;

unsigned int amt, offset=1;

char szDate[30];

char YYYY[30];

char MM[30];

char szField[300];

char szContent[1000];

char ImgPath[1024];

int queryid = 0;

 

EXEC SQL BEGIN DECLARE SECTION;

VARCHAR sqlstmt[1024];

 

int docid;

VARCHAR majordesc[128];

VARCHAR minordesc[128];

VARCHAR paperdate[16];

VARCHAR title[1025];

int minorid;

int isimage;

EXEC SQL END DECLARE SECTION;

 

DB_connect("test/test@db");

 

 

EXEC SQL ALLOCATE :blob;

EXEC SQL SELECT content INTO :blob FROM tdoc WHERE id = 692914692;

 

if(sqlca.sqlcode == NOT_FOUND)

DB_error("No data Found(Blob error)!!\n");

 

amt = MAX_BUF;

EXEC SQL LOB READ :amt FROM :blob AT :offset INTO :buff;

 

printf("%s\n",buff);

/*

page_view(ImgPath, szField , szDate, title.arr, lftobr(buff));

*/

 

EXEC SQL FREE :blob;

}

[Top]
No.
제목
작성자
작성일
조회
1860NLS_LANG = AMERICAN_KOREA.KO16KSC5601 로 설정해도 괜찮을까요?
한상헌
2000-10-26
6043
1862┕>Re: NLS_LANG = AMERICAN_KOREA.KO16KSC5601 로 설정해도 괜찮을까요?
소몰이
2000-10-26 15:38:34
6313
1859pro*c에서 컴파일 에러
이호재
2000-10-26
6067
1863┕>[참고]정확한 답변은 아니구요 pcscfg.cfg 수정하셨는지 확인을 해보시죠
문태준
2000-10-26 16:00:15
8280
1867 ┕>수정후에도 안됩니다.
이호재
2000-10-26 18:33:35
6214
1853[질문] ORA-01552 &lt;-- ㅠㅠ
javahead
2000-10-26
6500
1855┕>Re: [질문] ORA-01552 &lt;-- ㅠㅠ
소몰이
2000-10-26 03:10:48
6413
1856 ┕>Re: Re: [질문] ORA-01552 &lt;-- ㅠㅠ
javahead
2000-10-26 09:46:33
6340
1857  ┕>Re: Re: Re: [질문] ORA-01552 &lt;-- ㅠㅠ
jg
2000-10-26 10:26:17
6289
1861  ┕>Re: Re: Re: [질문] ORA-01552 &lt;-- ㅠㅠ
소몰이
2000-10-26 15:30:15
6946
1872   ┕>Re: Re: Re: Re: [감사] 감사합니다,,,,
javahead
2000-10-27 09:44:11
6444
1852[질문] pro*c 에서 blob에 넣은 텍스트 자료 빼는 방법 아시는분
문태준
2000-10-26
12592
1854┕>Re: [질문] pro*c 에서 blob에 넣은 텍스트 자료 빼는 방법 아시는분
소몰이
2000-10-26 03:05:10
6591
1873 ┕>Re: Re: [질문] pro*c 에서 blob에 넣은 텍스트 자료 빼는 방법 아시는분
문태준
2000-10-27 13:42:09
6262
1875  ┕>[pro*c] blob에서 텍스트 본문 뽑기 예제 올립니다. 소스랑 makefile
문태준
2000-10-29 11:05:41
17192
1850user 신규 등록은 어떻게 해야 하나요?
자수정
2000-10-25
6364
1851┕>Re: user 신규 등록은 어떻게 해야 하나요? -&gt; create user ...
문태준
2000-10-25 23:44:35
6458
1845자바 jdbc와 오라클과의 연동문제. 급합니다.
박정수
2000-10-25
6833
1844오라클 설치에러
흑흑
2000-10-25
6016
1846┕>Re: 오라클 설치에러
문태준
2000-10-25 21:12:17
5714
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다