Node.jsに関する追加情報

この項の内容は次のとおりです。

Node.jsアプリケーションの型マッピング

node-oracledb型(言語モジュールを介して入手可能)とTimesTen SQL型とのマッピングがあります

ノート:

TimesTenの暗黙的データ型変換により、追加のTimesTen SQL型をこれらのOracle Databaseの型とnode-oracledb別名の型にマップできます。『Oracle TimesTen In-Memory Database SQLリファレンス』データ型の変換を参照してください。

現在のリリースでのデータ型サポートの最新情報については、TimesTen Node.jsサンプルにあるREADME.mdファイルを参照してください。

表4-1 node-oracledbの型マッピング

Node.jsの型 Oracle Databaseの型 node-oracledb別名の型 TimesTenの型

Number

oracledb.DB_TYPE_BINARY_DOUBLE

該当なし

BINARY_DOUBLE

Number

oracledb.DB_TYPE_BINARY_FLOAT

該当なし

BINARY_FLOAT

Lob

oracledb.DB_TYPE_BLOB

oracledb.BLOB

BLOB

String

oracledb.DB_TYPE_CHAR

該当なし

CHAR

Lob

oracledb.DB_TYPE_CLOB

oracledb.CLOB

CLOB

ResultSet

oracledb.DB_TYPE_CURSOR

oracledb.CURSOR

REF CURSOR

Date

oracledb.DB_TYPE_DATE

oracledb.DATE

DATE

Number

oracledb.DB_TYPE_INTEGER

該当なし

NUMBERTT_BIGINTTT_INTEGERTT_SMALLINTTT_TINYINT

String

oracledb.DB_TYPE_NCHAR

該当なし

NCHAR (TimesTenではこの型はUTF-16のみです。)

Lob

oracledb.DB_TYPE_NCLOB

oracledb.NCLOB

NCLOB

Number

oracledb.DB_TYPE_NUMBER

oracledb.NUMBER

NUMBERTT_BIGINTTT_INTEGERTT_SMALLINTTT_TINYINT

String

oracledb.DB_TYPE_NVARCHAR

該当なし

NVARCHAR2 (TimesTenではこの型はUTF-16のみです。)

Buffer

oracledb.DB_TYPE_RAW

oracledb.BUFFER

BINARYVARBINARY

String

oracledb.DB_TYPE_ROWID

該当なし

ROWID

Date

oracledb.DB_TYPE_TIMESTAMP

該当なし

TIMESTAMPTT_TIMESTAMP

String

oracledb.DB_TYPE_VARCHAR

oracledb.STRING

VARCHAR

Node.jsの障害モード

Node.jsにはいくつかの障害モードがあります。

次のことに注意してください。

  • エラー・メッセージが、同じ条件下でOracleによって生成されるメッセージとは若干異なる場合があります。

  • Node.jsのメソッドconnection.executeMany()については、TimesTenでは、batcherrorsオプションは無視されるためデフォルトのbatcherrors=false設定のみがサポートされています。バッチ内のいずれかの行でエラーが発生した場合は、必ずエラーが返されます。(これに対して、Oracle Databaseではbatcherrors=trueがサポートされており、バッチ内のいずれかの行が成功すると必ず成功が返されます。)また、TimesTenデータベースに対して、1つのバッチ内で複数のエラーが発生した場合、TimesTenではエラーの順序付けは試行されませんが、Oracleデータベースに対して発生した場合にはそれらは順序付けられます。

Node.jsサンプル: TimesTenに接続してSQLを実行する

このサンプル・プログラムは、次を実行します:

  • TimesTenデータベースに接続します。

  • employeesという名前の表を作成します。

  • 表に3つの行を挿入します。

  • 行を選択して表示します。

  • 表を削除します。

  • データベースから切断します。

'use strict';
var oracledb = require('oracledb');

oracledb.initOracleClient();

async function run() {

  let connection;

  try {
    connection = await oracledb.getConnection({
      user: 'appuser', 
      password: 'password', 
      connectString: 'localhost/sampledb:timesten_direct'
    });

    let result;

    await connection.execute('CREATE TABLE employees(first_name VARCHAR2(20), last_name VARCHAR2(20))');
    console.log('Table created');
    const values = [['ROBERT', 'ROBERTSON'], ['ANDY', 'ANDREWS'], ['MICHAEL', 'MICHAELSON']];
    await connection.executeMany('INSERT INTO employees VALUES(:1, :2)', values);
    console.log('Inserted', values.length, 'employees into the table');
    result = await connection.execute('SELECT first_name, last_name FROM employees');
    result.rows.forEach(function(row){
      console.log('Selected employee:', row[0], row[1]);
    });
    await connection.execute('DROP TABLE employees');
    console.log('Table dropped');
  }
  catch (err) {
    console.log(err);
  }
  finally {
    if (connection) {
      try {
        connection.close();
        console.log('Connection closed');
      }
      catch (err) { 
        console.log(err);
      }
    }
  }
}

run();

このサンプル・プログラムを実行してTimesTenデータベースに接続すると、次の出力が生成されます:

Table created
Inserted 3 employees into the table
Selected employee: ROBERT ROBERTSON
Selected employee: ANDY ANDREWS
Selected employee: MICHAEL MICHAELSON
Table dropped
Connection closed

サンプル・プログラムでデータベースへの接続に使用される簡易接続方法の詳細は、「タスク4: TimesTenの接続の構成」を参照してください。

ダウンロード用のNode.jsサンプル・プログラム

TimesTenは、node-oracledbドライバを介したNode.jsのサンプル・プログラムを提供します。 これらのサンプル・プログラムは、TimesTen Node.jsサンプルで入手できます。