php 조작 Oralce

3442 단어 phpcloboralce
Oralce 와 Mysql 은 조작 에 있어 큰 차이 가 있 습 니 다.예 를 들 어:
  • Oralce 필드 에서 키 워드 를 사용 할 때 따옴표 를 추가 하여 SQL 에 써 야 합 니 다.예 를 들 어 user,order,size 등 입 니 다.
  • Oralce 는 제한 이 없 으 며 numrow 로 번 호 를 기록 해 야 합 니 다.예 를 들 어 세 번 째 조 를 추출 한 후 네 번 째 데 이 터 를 추출 해 야 합 니 다:numrow>=3 and numrow<8
  • 데이터 형식
  • Oralce 에는 auto 가 없습니다.imcrement 는 홈 키 를 추가 하고 시퀀스 등 으로 대체 해 야 합 니 다(SEQUENCE)
  • 마지막 으로 메 인 키 를 삽입 합 니 다.Oralce 는 검색 시퀀스 currval 값
  • Oralce 가 4000 바이트 가 넘 는 데 이 터 를 쓰 려 면 특별한 처리 가 필요 합 니 다.

  • 홈 키 와 4000 바이트 가 넘 는 데 이 터 를 설명 합 니 다.
    사용 시퀀스 자동 증가
    그러면 모든 표 는 독립 된 서열 을 만들어 야 합 니 다.생 성 문 구 는 다음 과 같 습 니 다.
    CREATE SEQUENCE sequence  //      
           [INCREMENT BY n]  //       n   n      ,            1
           [START WITH n]    //    ,     minvalue    maxvalue
           [{MAXVALUE n | NOMAXVALUE}] //   
           [{MINVALUE n | NOMINVALUE}] //   
           [{CYCLE | NOCYCLE}] //  /   
           [{CACHE n | NOCACHE}];//         

    예:
    CREATE SEQUENCE sq_name
        INCREMENT BY 1  --        
        START WITH 1    --  1      
        NOMAXVALUE      --         
        NOCYCLE         --     ,     
        CACHE 10;

    각 시퀀스 포함:
      NEXTVAL 은 시퀀스 의 다음 유효한 값 을 되 돌려 줍 니 다.모든 사용자 가 참조 할 수 있 습 니 다.삽입 할 때 주 키 값 으로 사용 합 니 다.  CURRVAL 에 저 장 된 시퀀스 의 현재 값 을 마지막 으로 주 키 ID 를 삽입 할 때 사용 합 니 다.
    데이터 삽입 시 사용:sqname.nextval  주 키 값 으로(따옴표 가 붙 지 않도록 주의)
    예:
    insert into table_name(id,name)value(sq_name.nextval,"OK");

    최근 에 홈 키 를 삽입 한 것 을 꺼 내 려 면 SQL 조 회 를 사용 해 야 합 니 다.
    SELECT sq_name.currval currval FROM dual

    긴 내용 삽입
    oralce 공식 문서 설명:http://www.oracle.com/technetwork/articles/fuecks-lobs-095315.html
    oci 함수 처리 사용:
    //   empty_clob()        clob   blob   empty_blob。
    //     RETURNING      clob      。
    //       
    $sql = "UPDATE
               mylobs
            SET
                mylob = EMPTY_CLOB()
            WHERE
               id = 2403
            RETURNING
                mylob INTO :mylob";
    
    $stmt = oci_parse($conn, $sql);
    //      LOB   FILE    ,    OCI-Lob  ,            SQL        ,        
    $mylob = oci_new_descriptor($conn,OCI_D_LOB);
    
    //       ,                    。
    oci_bind_by_name($stmt,':mylob',$mylob, -1, OCI_B_CLOB);
    
    //     SQL,                    ,         。
    oci_execute($stmt, OCI_DEFAULT) or die ("Unable to execute query
    "); // OCI-Lob , 。 if ( !$mylob->save( 'UPDATE: '.date('H:i:s',time()) ) ) {     //     oci_rollback($conn);          die("Unable to update lob
    ");      } // oci_commit();

    설명:oci 함 수 를 사용 할 때 점 위 부 호 를 사용 할 때 데이터 형식 에 따라 엄 격 히 가 야 합 니 다.그렇지 않 으 면 오류 가 발생 할 수 있 으 므 로 oci 를 사용 합 니 다.bind_by_name 방식 은 필드 마다 데이터 형식 이 일치 하 는 지 각별히 주의해 야 합 니 다.
    PDO 처리 사용:
    //     
    $pod=new PDO('oci:dbname=test;charset=utf8','system','admin123456');
    
    //   SQL
    $sth=$pod->prepare("INSERT INTO mylobs (id, mylob) VALUES (tslbh_xk.nextval, ?)");
    
    //    clob    
    $val='INSERT:test contents';
    
    //    ,    lob           ,         
    $sth->bindParam(1, $val, PDO::PARAM_STR,strlen($val));
    
    //  SQL
    $sth->execute() or die ("Unable to execute query
    ");

    설명:PDO 의 자리 표시 자 를 사용 하 는 것 도 데이터 형식 을 지정 해 야 합 니 다.기본 값 은 PDO::PARAM 입 니 다.STR,execute 함 수 를 포함 합 니 다.
    마지막 으로 능력 에 한계 가 있 기 때문에 텍스트 가 틀 리 면 지적 해 주세요!

    좋은 웹페이지 즐겨찾기