2013-10-17 2 views
0

웹 서버 node.js를 Oracle에 연결했는데 이미 데이터베이스에서 일부 데이터를 선택했습니다.Node.js에서 Oracle의 BLOB 읽기

string 또는 int와 같은 데이터 유형을 선택할 때 문제가 없지만 일부 BLOB도 읽어야합니다 (데이터베이스에서 PARAMETERS라고 함).

  • 첫 번째 문제 : 데이터베이스에 저장되어있는 BLOB를의 크기는 37000 바이트이지만, 버퍼의 크기를 최대 2000입니다 -> 해결 방법 : 나는 첫 번째 2000 바이트를 선택한

  • 두 번째 문제 : 결과가 배열이지만 비어 있거나 데이터를 읽을 수 없습니다 - 솔루션?

누구든지 node.js-Oracle 모듈로 BLOB를 읽는 방법을 알고 있습니까?

대단히 감사합니다!

db.connect({ "hostname": "xxx", "user":"xx", "password": "xx", "database": "xx"},  function(err, connection) { 
      if (err) { 
       return console.log("CONNECTION ERROR: " + err); 
      } 
      else{ 
       console.log('Connected to Oracle '); 
       connection.execute('SELECT utl_raw.cast_to_varchar2(dbms_lob.substr(PARAMETERS,2000,1)) FROM records WHERE records.id = 1', [], function (err, rows) { 
         if (err) { 
          console.log('error: ' + err); 
         } 
         console.log('Parameters= ' + rows); 
         socket.emit('response:record', {'record': rows}); 
       }); 
       connection.execute('SELECT records.name FROM records WHERE records.id = 1', [], function (err, rows) { 
         if (err) { 
          console.log('error: ' + err); 
         } 
         socket.emit('response:name', {'record': rows}); 
         console.log('name= ' + rows); 
       }); 
       connection.close(); 
       } 
}); 

결과는 다음과 같습니다

오라클
매개 변수 = [개체 개체]에 연결
이름 = [{NAME : ARD}]

+0

을 (Oracle 또는 DB-신탁)? –

+0

"oracle 0.2.0"을 사용합니다 – user2890262

답변

0

당신은 당신의 oracle 모듈의 버전을 업데이트해야 최신 버전 - 0.3.4 BLOB를 더 잘 지원합니다.

당신은 다음과 같이 작업을 수행 할 수 있습니다 정확히 사용합니까 모듈

npm update oracle 
+0

Oracle 모듈을 업데이트 했는데도 여전히 내 blob과 관련된 문제가 있습니다 ... 이제 Oracle에서 저장 프로 시저를 호출하는 blob (OCCIBLOB 유형)을 추출하려고합니다. (ReadBasicBolb 호출). 이 방법은 outparams.js (github.com/feedhenry/node-oracle/blob/master/test/outparams.js 참조)에 정의되어 있지만 예상되는 결과에 미치지 못합니다. 사실, 내가 호출을 실행할 때마다 난 무작위로 다른 결과를 봅니다 ... 왜 OOCIBLOB인지는 누구나 알고 있습니다. outparmas.js에서 유효성 검사 테스트를하지 않는 유일한 방법입니까? OCCIBLOB의 유효성이 확인되지 않았습니까? – user2890262

+0

원래 모듈의 6 개월 된 버전을 말합니다 : https://github.com/nearinfinity/node-oracle 원래 모듈을 사용할 수 있습니까? 가지고있는 모듈의 버전을 확인하십시오. [email protected]입니다. 그것은 대답에서 언급 한 BLOB를 지원합니다 –

+0

예, 0.3.4를 사용합니다. 덕분에 더 이상 빈 결과를 얻지 못합니다. 그러나 프로 시저를 실행할 때마다 다른 값에 도달합니다 ... – user2890262

관련 문제