출처 : synec@dext.net
PHP와 Oracle8에서 varchar2는 4000bytes까지만 된다. 그럴 경우 더 큰 타입은?
long, lob 등이 있다. 헌데 oracle8에서는 long보다 lob를 권장한다. long은 oracle7과의
호환을 위해 있는 타입이라는 설명이 있다.
아무튼 그 lob 중에서도 blob를 이용하면 4000byte가 넘는 내용을 입출력할 수 있다.
clob는 언어의 문제로 설정이 복잡하지만 blob는 그냥 된다. 아무튼 다음은
간단한 test용 code이다.
<?
# create table test (title varchar2(100), text blob);
echo "title: ".$title = time ();
$text =
"
한글도 입력하여 테스트합니다. synec!
ASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57kASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57ktyg'45y09i8ui24-tgi;340re8oiguos.2058ryuikjh23rw#YHRF%WU^TRHGF$%YERFDB^*I&U%^%ERASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57ktyg'45y09i8ui24-tgi;340re8oiguos.2058ryuikjh23rw#YHRF%WU^TRHGF$%YERFDB^*I&U%^%ERASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57ktyg'45y09i8ui24-tgi;340re8oiguos.2058ryuikjh23rw#YHRF%WU^TRHGF$%YERFDB^*I&U%^%ER
80.!@#$%^&*()_+|1234567890-=\[];'./,{}:"<>?ASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57kASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57ktyg'45y09i8ui24-tgi;340re8oiguos.2058ryuikjh23rw#YHRF%WU^TRHGF$%YERFDB^*I&U%^%ERASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57ktyg'45y09i8ui24-tgi;340re8oiguos.2058ryuikjh23rw#YHRF%WU^TRHGF$%YERFDB^*I&U%^%ERASDLJKAK14323tgfdh554tgFYdjh36tfw6t54rth5edyj57ktyg'45y09i8ui24-tgi;340re8oiguos.2058ryuikjh23rw#YHRF%WU^TRHGF$%YERFDB^*I&U%^%ER
";
echo "<hr>login: ".$conn = OCILogon (USER, PASSWORD, SID);
# INSERT
echo "<hr>sql: ".$sql = "INSERT INTO test VALUES ('$title', EMPTY_BLOB()) RETURNING text INTO :text";
echo "<hr>parse: ".$stmt = OCIParse ($conn, $sql);
echo "<hr>new_desc: ".$clob = OCINewDescriptor ($conn, OCI_D_LOB);
echo "<hr>bind: ".OCIBindByName ($stmt, ":text", &$clob, -1, OCI_B_BLOB);
echo "<hr>exec: ".OCIExecute ($stmt, OCI_DEFAULT);
echo "<hr>save: ".$clob->save($text);
echo "<hr>free: ".$clob->free();
echo "<hr>commit: ".OCICommit ($conn);
echo "<hr>free_state: ".OCIFreeStatement($stmt);
# SELECT
echo "<hr>sql: ".$sql = "SELECT title, text FROM test";
echo "<hr>parse: ".$stmt = OCIParse ($conn, $sql);
echo "<hr>exec: ".OCIExecute ($stmt, OCI_DEFAULT);
echo "<hr>row: ".$row = OCIFetchStatement ($stmt, $result);
echo "<hr>free_state: ".OCIFreeStatement($stmt);
echo "<hr>logout: ".OCILogOff($conn);
# PRINT
echo "<p><hr>result_title: ".$result[TITLE][$row-1];
echo "<br>text size: ".strlen ($result[TEXT][$row-1]);
echo "<br>result_text: ".$result[TEXT][$row-1];
?>
|