강의 컨설팅 트레이닝 무료진단 무료책자 마케팅편지 마케팅정보공유 다이어리 서비스제휴 고객센터

PHP에서 사용하는 오라클 함수
작성자 : 13 김영철
등록날짜 : 2009.01.14 21:42
3,103
 

함 수 명 기    능( 기능, 사용법, 설명 )
OCIColumnIsNULL
  • 결과 컬럼이 널(NULL)인지 테스트한다
  • int OCIColumnIsNULL (int stmt, mixed column)
  • OCIColumnIsNULL()함수는 구문 stmt의 결과값에서 리턴된 컬럼 column 값이 널(NULL)이 면 true를 리턴한다. col 인수를 위해 컬럼 숫자(column-number(1-Based))나 컬럼 이름 (column-name)을 사용할 수 있다
OCIColumnName
  • 컬럼의 이름을 리턴한다.
  • string OCIColumnName (int stmt, int col)
  • OCIColumnName() 함수는 컬럼 숫자(1-based)에 부합되는 컬럼 이름을 리턴한다.

    예 1. OCIColumnName

    <?php
    print "<HTML><PRE>n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    print "<TABLE BORDER="1">";
    print "<TR>";
    print "<TH>Name</TH>";
    print "<TH>Type</TH>";
    print "<TH>Length</TH>";
    print "</TR>";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
    $column_name = OCIColumnName($stmt,$i);
    $column_type = OCIColumnType($stmt,$i);
    $column_size = OCIColumnSize($stmt,$i);
    print "<TR>";
    print "<TD>$column_name</TD>";
    print "<TD>$column_type</TD>";
    print "<TD>$column_size</TD>";
    print "</TR>";
    }
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>n";
    ?>
OCIColumnSize
  • 결과 컬럼 사이즈를 리턴한다
  • int OCIColumnSize (int stmt, mixed column)
  • OCIColumnSize()함수는 오라클에 의해 주어진 컬럼의 사이즈를 리턴한다. col 인수에는 컬럼 숫자(column-number (1-Based))나 컬럼 이름을 사용할 수 있다.

    OCIColumnName() 함수의 예제를 참조.
OCIColumnType
  • 컬럼의 데이터 타입을 리턴한다.
  • mixed OCIColumnType (int stmt, int col)
  • OCIColumnType()함수는 컬럼 숫자(1-based)에 부합되는 컬럼의 데이터 타입을 리턴한다 .

    OCIColumnName() 함수의 예제를 참조.
OCICommit
  • 미결정된 트랜잭션을 커밋시킨다.
  • int OCICommit (int connection)
  • OCICommit() 오라클 접속 파라미터 connection에 대해서 미결정된 모든 구문(outstand ing statements)을 커밋한다.
OCIError
  • 마지막에 발생한 에러에 대한 정보를 얻는다.
  • array OCIError ([int stmt|conn|global])
  • 주어진 stmt, conn, global에서 마지막에 발생한 에러 메시지를 반환한다. 에러가 없으 면 False를 반환한다. 인수가 주어지지 않으면 가장 마지막에 발생한 에러 메시지가 반환된다. 반환되는 에러는 에러코드와 에러메시지로 이루어진 연관배열의 형태이다.
OCIExecute
  • Statement를 실행한다.
  • int OCIExecute (int statement [, int mode])
  • OCIExecute()함수는 OCIParse()함수에 의해 분석된 쿼리를 실행한다. 두 번째 인수가 생략되면 기본값은 OCI_COMMENT_ON_SUCCESS로 쿼리를 실행한다. 자동으 로 커밋을 하길 원하지 않는다면 mode를 OCI_DEFAULT로 지정해주어야 한다.
OCIFetch
  • 결과 버퍼(result-buffer)로 다음 열을 페치한다
  • int OCIFetch (int statement)
  • OCIFetch()함수는 다음 열(SELECT 구문을 위해)을 내부 결과 버퍼(internal result-bu ffer)에 페치한다.
OCIFetchInto
  • 결과 배열(result-array)에 다음 열을 페치한다
  • int OCIFetchInto (int stmt, array &result [, int mode])
  • OCIFetchInto()함수는 다음열(SELECT 구문을 위해)을 result배열에 페치한다. OCIFetc hInto()함수는 result 변수의 이전값을 덮어 쓸것이다. 기본적으로 result변수는 NULL 이 아닌 모든 컬럼의 일차원 배열을 포함할것이다.

    mode인수는 이 함수의 기본값을 변화시킨다. 한개 이상의 플래그를 추가할수있다(OCI_ ASSOC+OCI_RETURN_NULLS와 같이).
    알려진 플래그는 다음과 같다:

    OCI_ASSOC 연관배열(associative array)을 리턴한다.
    OCI_NUM 1부터 시작하는 숫자를 갖는 변수를 리턴한다. (디폴트)
    OCI_RETURN_NULLS 빈 컬럼을 리턴한다.
    OCI_RETURN_LOBSdescriptor 대신에 LOB의 값을 리턴한다
OCIFetchStatement
  • 배열에 모든 열의 결과 값을 페치한다.
  • int OCIFetchStatement (int stmt, array &variable)
  • OCIFetchStatement()함수는 사용자 정의 배열로 결과값의 모든 열을 페치한다. OCIFet chStatement()함수는 페치된 열의 갯수를 리턴한다.

    예 1. OCIFetchStatement

    <?php
    /* OCIFetchStatement example
    mbritton@verinet.com (990624) */

    $conn = OCILogon("scott","tiger");

    $stmt = OCIParse($conn,"select * from emp");

    OCIExecute($stmt);

    $nrows = OCIFetchStatement($stmt,$results);
    if ( $nrows > 0 ) {
    print "<TABLE BORDER="1">n";
    print "<TR>n";
    while ( list( $key, $val ) = each( $results ) ) {
    print "<TH>$key</TH>n";
    }
    print "</TR>n";
    for ( $i = 0; $i < $nrows; $i++ ) {
    reset($results);
    print "<TR>n";
    while ( $column = each($results) ) {
    $data = $column['value'];
    print "<TD>$data[$i]</TD>n";
    }
    print "</TR>n";
    }
    print "</TABLE>n";
    } else {
    echo "No data found<BR>n";
    }
    print "$nrows Records Selected<BR>n";


  • OCIFreeStatement($stmt);
    OCILogoff($conn);
    ?>
OCILogOff
  • 오라클과의 연결을 종료한다.
  • int OCILogOff (int connection)
  • 주어진 connection과 연결된 오라클 접속을 종료한다.
OCILogon
  • 오라클과의 연결을 설정한다.
  • int OCILogon (string username, string password [, string db])
  • OCILogon()함수는 다은 OCI를 호출하는데 필요한 연결 식별자를 반환한다. 세 번째 인수로는 로컬 오라클 인스턴스 이름이나 접속 가능한 tnsnames.ora의 접속명 을 명시해주면 된다. 원격 DB서버와의 접속도 가능하다. 세 번째 인수를 생략할 경우, ORACLE_SID(Oracle instance) 또는 TWO_TASK(tnsnames.o ra) 환경변수의 값을 사용하여 어떤 DB에 접속할 것인지 결정한다.

    <?
    print "<HTML><PRE>";
    $db = "";

    $c1 = ocilogon("scott","tiger",$db);
    $c2 = ocilogon("scott","tiger",$db);

    function create_table($conn)
    { $stmt = ociparse($conn,"create table scott.hallo (test varchar2(64))" ;);
    ociexecute($stmt);
    echo $conn." created tablenn";
    }

    function drop_table($conn)
    { $stmt = ociparse($conn,"drop table scott.hallo");
    ociexecute($stmt);
    echo $conn." dropped tablenn";
    }

    function insert_data($conn)
    { $stmt = ociparse($conn,"insert into scott.hallo
    values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))&qu ot;);
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn." inserted hallonn";
    }

    function delete_data($conn)
    { $stmt = ociparse($conn,"delete from scott.hallo");
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn." deleted hallonn";
    }

    function commit($conn)
    { ocicommit($conn);
    echo $conn." committednn";
    }

    function rollback($conn)
    { ocirollback($conn);
    echo $conn." rollbacknn";
    }

    function select_data($conn)
    { $stmt = ociparse($conn,"select * from scott.hallo");
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn."----selectingnn";
    while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">nn& quot;;
    echo $conn."----donenn";
    }

    create_table($c1);
    insert_data($c1); // Insert a row using c1
    insert_data($c2); // Insert a row using c2

    select_data($c1); // Results of both inserts are returned
    select_data($c2);

    rollback($c1); // Rollback using c1

    select_data($c1); // Both inserts have been rolled back
    select_data($c2);

    insert_data($c2); // Insert a row using c2
    commit($c2); // commit using c2

    select_data($c1); // result of c2 insert is returned

    delete_data($c1); // delete all rows in table using c1
    select_data($c1); // no rows returned
    select_data($c2); // no rows returned
    commit($c1); // commit using c1

    select_data($c1); // no rows returned
    select_data($c2); // no rows returned

    drop_table($c1);
    print "</PRE></HTML>";
    ?>
OCINLogon
  • 오라클 데이터베이스에 접속하고 새로운 접속을 이용해서 로그온한다. 새로운 세션(session)을 넘겨준다.
  • int OCINLogon (string username, string password [, string db])
  • OCINLogon() 오라클8 DB에 새로운 접속을 형성하고, 로그온 한다. 세번째 인수는 로컬 오라클 인스턴스(local Oracle instanace)의 이름, 또는 tnsnames.ora설정파일의 엔트 리(entry) 이름이 될수 있다. 세번째 인수가 생략되면, PHP는 접속할 오라클 데이터베 이스를 결정하기 위해 환경변수 ORACLE_SID (Oracle instance)나 TWO_TASK(tnsnames.o ra)를 이용한다.

    OCINLogon()함수는 새로운 접속을 강제로 형성한다. 각 트랜잭션들을 분리할 필요가 있 을때 사용해야 할것이다. 기본적으로, OCILogon()함수를 사용하면 접속은 페이지 레벨 에서 분배되어지고, OCIPLogon()함수는 웹서버 프로세스 레벨에서 분배되어진다. OCIN Logon()함수로 두개 이상의 접속을 연다면, 모든 커밋(commits)과 롤백(rollbacks)은 특정 접속에만 적용되어진다.

    This example demonstrates how the connections are separated.

    예 1. OCINLogon

    <?php
    print "<HTML><PRE>";
    $db = "";

    $c1 = ocilogon("scott","tiger",$db);
    $c2 = ocinlogon("scott","tiger",$db);

    function create_table($conn)
    { $stmt = ociparse($conn,"create table scott.hallo (test
    varchar2(64))");
    ociexecute($stmt);
    echo $conn." created tablenn";
    }

    function drop_table($conn)
    { $stmt = ociparse($conn,"drop table scott.hallo");
    ociexecute($stmt);
    echo $conn." dropped tablenn";
    }

    function insert_data($conn)
    { $stmt = ociparse($conn,"insert into scott.hallo
    values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))&qu ot;);
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn." inserted hallonn";
    }

    function delete_data($conn)
    { $stmt = ociparse($conn,"delete from scott.hallo");
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn." deleted hallonn";
    }

    function commit($conn)
    { ocicommit($conn);
    echo $conn." committednn";
    }

    function rollback($conn)
    { ocirollback($conn);
    echo $conn." rollbacknn";
    }

    function select_data($conn)
    { $stmt = ociparse($conn,"select * from scott.hallo");
    ociexecute($stmt,OCI_DEFAULT);
    echo $conn."----selectingnn";
    while (ocifetch($stmt))
    echo $conn." <".ociresult($stmt,"TEST").">nn& quot;;
    echo $conn."----donenn";
    }

    create_table($c1);
    insert_data($c1);
    select_data($c1);
    select_data($c2);

    rollback($c1);

    select_data($c1);
    select_data($c2);

    insert_data($c2);
    commit($c2);

    select_data($c1);

    delete_data($c1);
    select_data($c1);
    select_data($c2);
    commit($c1);

    select_data($c1);
    select_data($c2);

    drop_table($c1);
    print "</PRE></HTML>";
    ?>
OCINumCols
  • 구문 결과값의 컬럼의 갯수를 리턴한다
  • int OCINumCols (int stmt)
  • OCINumCols()함수는 구문에서 컬럼의 갯수를 리턴한다.

    예 1. OCINumCols

    <?php
    print "<HTML><PRE>n";
    $conn = OCILogon("scott", "tiger");
    $stmt = OCIParse($conn,"select * from emp");
    OCIExecute($stmt);
    while ( OCIFetch($stmt) ) {
    print "n";
    $ncols = OCINumCols($stmt);
    for ( $i = 1; $i <= $ncols; $i++ ) {
    $column_name = OCIColumnName($stmt,$i);
    $column_value = OCIResult($stmt,$i);
    print $column_name . ': ' . $column_value . "n";
    }
    print "n";
    }
    OCIFreeStatement($stmt);
    OCILogoff($conn);
    print "</PRE>";
    print "</HTML>n";
    ?>
OCIParse
  • 쿼리문을 분석한다.
  • int OCIParse (int conn, strint query)
  • 주어진 연결을 이용하여 쿼리문을 분석한다.
    주어진 쿼리문이 유효하면 statement 식별자를, 그렇지않으면 False를 반환한다.
    OCIExecute를 실행하기전에 이 함수를 사용하여야 한다.

    $stmt = OCIParse($conn,$query);
    OCIExecute($stmt,OCI_DEFAULT);
OCIPLogon
  • 오라클 데이터베이스에 접속하고 영속적 DB 접속 (persistant connection) 을 이용해서 로그온한다.
  • int OCIPLogon (string username, string password [, string db])
  • OCIPLogon() 오라클8 DB에 영속적인 접속을 형성하고, 로그온 한다. 세번째 인수는 로 컬 오라클 인스턴스(local Oracle instanace)의 이름, 또는 tnsnames.ora설정파일의 엔 트리(entry) 이름이 될수 있다. 세번째 인수가 생략되면, PHP는 접속할 오라클 데이터 베이스를 결정하기 위해 환경변수 ORACLE_SID (Oracle instance)나 TWO_TASK(tnsnames .ora)를 이용한다.
OCIResult
  • 페치된 열의 컬럼 값을 리턴한다
  • mixed OCIResult (int statement, mixed column)
  • OCIResult()함수는 현재 열의 컬럼 column에 대한 데이터를 리턴한다 (OCIFetch()함수 를 보라). OCIResult()함수는 추상형데이터타입(ROWID, LOB, FILE)을 제외한 문자열같 은 모든 것을 리턴할 것이다.
OCIRollback
  • 미결정된 트랜잭션을 롤백한다.
  • int OCIRollback (int connection)
  • OCIRollback() 오라클 접속 파라미터 connection에 대해서 미결정된 모든 구문(outsta nding statements)을 롤백 처리한다
OCIRowCount
  • 적용되어진 열의 갯수를 가져온다
  • int OCIRowCount (int statement)
  • OCIRowCount()함수는 update같은 구문에 의해 적용되어진 열의 갯수를 리턴한다. 이 함 수는 select 가 리턴할 열의 갯수를 말해 주진 않을 것이다!

    예 1. OCIRowCount

    <?php
    print "<HTML><PRE>";
    $conn = OCILogon("scott","tiger");
    $stmt = OCIParse($conn,"create table emp2 as select * from emp");
    OCIExecute($stmt);
    print OCIRowCount($stmt) . " rows inserted.<BR>";
    OCIFreeStatement($stmt);
    $stmt = OCIParse($conn,"delete from emp2");
    OCIExecute($stmt);
    print OCIRowCount($stmt) . " rows deleted.<BR>";
    OCICommit($conn);
    OCIFreeStatement($stmt);
    $stmt = OCIParse($conn,"drop table emp2");
    OCIExecute($stmt);
    OCIFreeStatement($stmt);
    OCILogOff($conn);
    print "</PRE></HTML>";
    ?>
OCIServerVersion
  • 오라클 서버의 버전 정보를 출력한다.
  • string OCIServerVersion (int conn)
  • 연결된 오라클 서버의 버전 정보를 문자열로 반환한다.
    <?php
    $conn = OCILogon("scott","tiger");
    print "Server Version: " . OCIServerVersion($conn);
    OCILogOff($conn);
    ?>
OCIStatementType
  • OCI 구문(statement)의 타입을 리턴한다.
  • string OCIStatementType (int stmt)
  • OCIStatementType() 함수는 다음중 하나를 리턴한다:

    "SELECT"
    "UPDATE"
    "DELETE"
    "INSERT"
    "CREATE"
    "DROP"
    "ALTER"
    "BEGIN"
    "DECLARE"
    "UNKNOWN"

    예 1. Code examples

    <?php
    print "<HTML><PRE>";
    $conn = OCILogon("scott","tiger");
    $sql = "delete from emp where deptno = 10";

    $stmt = OCIParse($conn,$sql);
    if ( OCIStatementType($stmt) == "DELETE" ) {
    die "You are not allowed to delete from this table<BR>";
    }

    OCILogoff($conn);
    print "</PRE></HTML>";
    ?>

[출처] 마루아라

"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기,
각종 광고, 영업, 판매, 제안서, 전단지
반응율 3배×10배 이상 높이는 마법의 8단계 공식"
자세히보기

Comments

번호 제목 글쓴이 날짜 조회
2895 Mysql 백업 하기 13 김영철 01.29 3130
2894 UTF8 을 사용하기 위한 APM 설정 13 김영철 01.29 3128
2893 [CSS]글씨 크기-줄 간격 조절해서 보기 좋은 문서 만들기 99 단국강토 02.05 3126
2892 강제로 404 에러내기 13 김영철 01.13 3126
2891 :: Oracle rownum() 구현하기 13 김영철 01.24 3125
2890 [okjsp펌] mysql 스키마 백업 13 김영철 01.29 3123
2889 MSSQL Server DBA 가이드-5 M 최고의하루 12.26 3122
2888 Windows Server 2003 완벽 재설치 M 최고의하루 12.19 3118
2887 :: 엑셀 워크시트를 연결된 서버로 만들기 13 김영철 01.24 3117
2886 MSSQL 백업복구 13 김영철 01.24 3116
2885 Rewrite 99 단국강토 01.08 3115
2884 동영상 그림크기조절 99 단국강토 12.30 3113
2883 폼요소 - 라디오 버튼(radio button) M 최고의하루 12.19 3111
2882 PC에 남겨진 개인정보 제거하기 M 최고의하루 01.03 3111
2881 인터넷 동영상 저장하기 - 넷트랜스포터 사용 - M 최고의하루 01.12 3110
2880 rsync (remote sync daemon) UNIX 서버간 원격 복사 13 김영철 01.29 3109
2879 스케치 효과 10 액션쟁이 01.05 3108
2878 네이버 최신기사 퍼오기 (HTML 스크랩핑) - PHP5 13 김영철 01.14 3108
열람중 PHP에서 사용하는 오라클 함수 13 김영철 01.14 3104
2876 데이터베이스의 저장 프로시저를 자동으로 생성 M 최고의하루 12.24 3103
2875 특이한 스케치 효과 10 액션쟁이 12.31 3101
2874 컴퓨터 증상으로 보는 진단 노하우!! 17 vane 12.27 3095
2873 SQL : T-SQL문 : T-SQL(Transact-SQL)문법 13 김영철 01.23 3094
2872 왠만한 컴터 오류 해결~! M 최고의하루 01.02 3088
2871 A 태그 - 링크에 CSS 적용시키기 팁 +_+ 99 단국강토 01.30 3086
2870 [PHP] XML 문서파싱 - SAX 방식 , DOM 방식 13 김영철 01.13 3086
2869 php.ini register_globals 13 김영철 01.14 3085
2868 [엑셀과 mysql의 데이터이동] 13 김영철 01.14 3085
2867 attachMovie한 무비클립의 _x, _y 좌표를 설정하려면 99 단국강토 02.05 3084
2866 php기본함수 정리!! 13 김영철 01.13 3084
마케팅
특별 마케팅자료
다운로드 마케팅자료
창업,경영
기획,카피,상품전략
동기부여,성취