| ¿À¶óŬ CLOB ŸÀÔ¿¡ ´ë¿ë·®ÀÇ ¹®ÀÚ¿À» ³Ö´Â ÇÁ·Î½ÃÀú ¿¹Á¦ | ||
| PROCEDURE ProcMasterBoardUpdate (
p_title IN MasterBoard.title%TYPE, p_html IN MasterBoard.html%TYPE, p_absoluteno IN MasterBoard.absoluteno%TYPE, p_content IN long, p_errorcode OUT NUMBER ) AS v_clob_selected clob; v_write_amt number; v_write_offset number := 1; v_buf long; BEGIN p_errorcode := 1; UPDATE masterboard SET title=p_title, html=p_html, content=EMPTY_CLOB() where absoluteno=p_absoluteno RETURNING content INTO v_clob_selected; if p_content is Not Null then v_buf := p_content; v_write_amt := length(v_buf); DBMS_LOB.WRITE(v_clob_selected, v_write_amt, v_write_offset, v_buf); end if; commit; EXCEPTION WHEN OTHERS THEN p_errorcode := 100; End ProcMasterBoardUpdate; PROCEDURE ProcMasterBoardInsert ( p_owner IN MasterBoard.owner%TYPE, p_board_no IN MasterBoard.board_no%TYPE, p_title IN MasterBoard.title%TYPE, p_writer IN MasterBoard.writer%TYPE, p_password IN MasterBoard.password%TYPE, p_addr IN MasterBoard.addr%TYPE, p_no IN MasterBoard.no%TYPE, p_indexedno IN MasterBoard.indexedno%TYPE, p_series IN MasterBoard.series%TYPE, p_connectno IN MasterBoard.connectno%TYPE, p_html IN MasterBoard.html%TYPE, p_content IN long, p_errorcode OUT NUMBER ) AS v_clob_selected clob; v_write_amt number; v_write_offset number := 1; v_buf long; Begin p_errorcode := 1; if p_connectno>0 then UPDATE masterboard SET indexedNo= indexedNo-1 WHERE no=p_no and indexedNo < p_indexedno; commit; INSERT INTO MasterBoard (in_date,owner,board_no,title,writer,password, addr, no, indexedno, series, connectno, html, absoluteno) VALUES (sysdate,p_owner,p_board_no,p_title,p_writer,p_password, p_addr, p_no, p_indexedno-1, p_series+1, p_connectno, p_html, 0) RETURNING content INTO v_clob_selected; else INSERT INTO MasterBoard (in_date,owner,board_no,title,writer,password, addr, no, indexedno, series, connectno, html, absoluteno) VALUES (sysdate,p_owner,p_board_no,p_title,p_writer,p_password, p_addr, p_no, p_indexedno, p_series, p_connectno, p_html, 0) RETURNING content INTO v_clob_selected; end if; if p_content is Not Null then v_buf := p_content; v_write_amt := length(v_buf); DBMS_LOB.WRITE(v_clob_selected, v_write_amt, v_write_offset, v_buf); end if; commit; EXCEPTION WHEN OTHERS THEN p_errorcode := 100; End ProcMasterBoardInsert; |
||
| * asp ÄÚµå
set objDB = Server.CreateObject("Netiami.DB") set writeMail=server.createobject("adodb.command") with writeMail .ActiveConnection=objDB.GetConnectionString() .CommandText = "ProcMailInsert" .CommandType = 4 .Parameters.Append = writeMail.CreateParameter("p_id", 200, 1, 36, session("mst_id")) .Parameters.Append = writeMail.CreateParameter("p_title", 200, 1, 1000, title) .Parameters.Append = writeMail.CreateParameter("p_content", 201, 1, Lenb(Body), Body) .Parameters.Append = writeMail.CreateParameter("p_errorcode", 3, 2) .Execute() end with result = Cint(writeMail.Parameters("p_errorcode")) set writeMail=nothing set objDB=nothing * ÀúÀå Å×À̺í CREATE TABLE mailing_info ( no NUMBER DEFAULT 0 PRIMARY KEY NOT NULL, id VARCHAR2(36) NOT NULL, title VARCHAR2(1000) NOT NULL, content CLOB DEFAULT EMPTY_CLOB(), state CHAR(1) DEFAULT 'R' NOT NULL, regday DATE DEFAULT SYSDATE NOT NULL ) * ÇÁ·Î½ÃÀú CREATE OR REPLACE PROCEDURE ProcMailInsert ( p_id IN mailing_info.id%TYPE, p_title IN mailing_info.title%TYPE, p_content IN long, p_errorcode OUT NUMBER ) IS v_clob_selected clob; v_write_amt number; v_write_offset number := 1; v_buf long; Begin p_errorcode := 0; INSERT INTO mailing_info (id, title) VALUES (p_id, p_title) RETURNING content INTO v_clob_selected; if p_content is Not Null then v_buf := p_content; v_write_amt := length(v_buf); DBMS_LOB.WRITE(v_clob_selected, v_write_amt, v_write_offset, v_buf); end if; commit; End ProcMailInsert; / * ÇÁ·Î½ÃÀú end ±¸¹® À§¿¡ EXCEPTION -- ¿¹¿Ü ó¸®(¿¡·¯) ¸¦ Ãß°¡°¡´É |
| # # PHP4, ORACLE BLOB TYPE INSERT, SELECT, SEARCH # create table temp01 ( absno number(11), tf1 blob, tf2 blob ); <? $v1="°¡³ª´Ù¶ó¸¶¹Ù»ç"; $v2="abcdefghijklmn"; #ÀԷºκР//»õ·Î¿î ºó descriptor LOB¸¦ ÃʱâÈ $blob1 = OCINewDescriptor($connect, OCI_D_LOB); $blob2 = OCINewDescriptor($connect, OCI_D_LOB); $strSQL="insert into temp01 (absno,tf1,tf2) values (1,EMPTY_BLOB(),EMPTY_BLOB()) returning tf1,tf2 into :the_blob1,:the_blob2"; $stmt=OCIParse($connect,$strSQL); OCIBindByName($stmt,":the_blob1",&$blob1,-1,OCI_B_BLOB); OCIBindByName($stmt,":the_blob2",&$blob2,-1,OCI_B_BLOB); $result=OCIExecute($stmt,OCI_DEFAULT); $result=$blob1->save($v1); $blob1->free(); $result.=$blob2->save($v2); $blob2->free(); OCIcommit($connect); if ($result) { echo "YES :)<br><br>"; } else { echo "NOT :(<br><br>"; } #¼¿·ºÆ® ºÎºÐ $strSQL = "select absno,tf1,tf2 from temp01"; $stmt = OCIParse($connect,$strSQL); OCIDefineByName($stmt,"ABSNO",&$absno); OCIDefineByName($stmt,"TF1",&$tf1); OCIDefineByName($stmt,"TF2",&$tf2); OCIExecute($stmt,OCI_DEFAULT); //$result=OCIFetch($stmt); while ($result=OCIFetch($stmt)) { # LOB data´Â Object¸¦ ´ÙÀ½°ú °°ÀÌ Ç®¾îÁØ´Ù. $tf1 = $tf1->load(); $tf2 = $tf2->load(); echo "#absno: ".$absno."<br><br><br>-------------------------------------------------<br><br><br>"; echo "#tf1: ".$tf1."<br><br><br>-------------------------------------------------<br><br><br>"; echo "#tf2: ".$tf2."<br><br><br>-------------------------------------------------<br><br><br>"; } #UPDATE //»õ·Î¿î ºó descriptor LOB¸¦ ÃʱâÈ $blob1 = OCINewDescriptor($connect,OCI_D_LOB); $hex=bin2hex('°¡³ª´Ù¶ó'); $strSQL = "update temp01 set absno=2,tf1=empty_blob() where dbms_lob.instr(tf1,hextoraw('$hex')) <> 0 returning tf1 into :the_blob1"; $stmt = OCIParse($connect,$strSQL); OCIBindByName($stmt,":the_blob1",&$blob1,-1,OCI_B_BLOB); OCIExecute($stmt,OCI_DEFAULT); $blob1->save("¼öÁ¤ÇÑ ³»¿ëÀÔ´Ï´Ù."); $blob1->free(); #°Ë»ö ºÎºÐ $hex=bin2hex('asdf'); $strSQL=" select absno from temp01 where dbms_lob.instr(tf1,hextoraw('$hex')) <> 0 "; $stmt=OCIParse($connect,$strSQL); OCIDefineByName($stmt,"absno",&$absno); $result=OCIFetch($stmt); OCIFreeStatement($stmt); OCILogoff($connect); ?> |