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の型 |
---|---|---|---|
|
|
該当なし |
|
|
|
該当なし |
|
|
|
|
|
|
|
該当なし |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
該当なし |
|
|
|
該当なし |
|
|
|
|
|
|
|
|
|
|
|
該当なし |
|
|
|
|
|
|
|
該当なし |
|
|
|
該当なし |
|
|
|
|
|
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の接続の構成」を参照してください。