UNPKG

11.7 kBMarkdownView Raw
1# Node-oracledb Examples
2
3The directory in node-oracledb's [Github repository](https://github.com/oracle/node-oracledb/tree/main/examples) contains a lot of [node-oracledb](https://www.npmjs.com/package/oracledb) examples.
4Documentation is [here](https://node-oracledb.readthedocs.io/en/latest/).
5
6To run the examples:
7
8- [Install node-oracledb](https://node-oracledb.readthedocs.io/en/latest/user_guide/installation.html#quickstart).
9
10- Ensure that you navigate to the `examples` directory in your terminal window
11 or IDE, where you are running the samples.
12
13- Review `dbconfig.js`.
14
15In your terminal window or IDE, set the following environment variables to
16provide credentials for the `dbconfig.js` file.
17
18- `NODE_ORACLEDB_USER` must be set to the database user.
19
20- `NODE_ORACLEDB_PASSWORD` must be set to the database password.
21
22- `NODE_ORACLEDB_CONNECTIONSTRING` must be set to the connection string that points to your database's location.
23
24- `NODE_ORACLEDB_EXTERNALAUTH` provides the options for enabling external authentication. Setting this environment variable to "true" will enable external authentication. To ensure external authentication works, firstly make sure the Oracle external authentication service is correctly configured. See [Documentation for External Authentication](https://node-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#extauth) for details.
25
26- `NODE_ORACLEDB_DRIVER_MODE` provides an option to set the 'Thin' or 'Thick' modes of node-oracledb. Setting this environment variable to "thick" will enable Thick mode.
27Setting it to "thin" will retain the Thin mode. The default mode is Thin.
28
29- `NODE_ORACLEDB_WALLET_LOCATION` must be set to the local directory name for the wallets that may be required for mutual TLS (mTLS) connections, especially to Oracle Cloud
30Autonomous Databases optionally. The wallet location can also be provided as a part of the database connect string.
31
32- `NODE_ORACLEDB_WALLET_PASSWORD` must set to the password for the wallets that may be required for mutual TLS (mTLS) connections, especially to Oracle Cloud Autonomous Databases.
33
34- `NODE_ORACLEDB_CLIENT_LIB_DIR` provides an optional path for the Oracle Client libraries to be used on Windows and macOS platforms, when using Thick mode in node-oracledb.
35
36Review the examples and then run them individually. For example, to see what
37 the file `example.js` does, use:
38
39 ```
40 node example.js
41 ```
42
43After running the examples, the demonstration objects can be dropped with
44 `demodrop.js`:
45
46 ```
47 node demodrop.js
48 ```
49
50Many examples can be run in either node-oracledb Thin (the default) or Thick
51modes. Thin mode is a pure JavaScript implementation of node-oracledb.
52Setting the environment variable `NODE_ORACLEDB_DRIVER_MODE` to `'thick'` will
53make examples use Thick mode.
54
55## Example Overview
56
57If this is your first time with node-oracledb, start with
58[`example.js`](example.js).
59
60File Name | Description
61----------------------------------------------------------|----------------------------------------------------------------------------------
62[`aqmulti.js`](aqmulti.js) | Oracle Advanced Queuing (AQ) example passing multiple messages
63[`aqobject.js`](aqobject.js) | Oracle Advanced Queuing (AQ) example passing an Oracle Database object
64[`aqoptions.js`](aqoptions.js) | Oracle Advanced Queuing (AQ) example setting options and message attributes
65[`aqraw.js`](aqraw.js) | Basic Oracle Advanced Queuing (AQ) example passing text messages
66[`aqutil.js`](aqutil.js) | Common file to setup the user credentials for all the Advanced Queuing (AQ) examples.
67[`blobhttp.js`](blobhttp.js) | Simple web app that streams an image
68[`calltimeout.js`](calltimeout.js) | Shows how to cancel a SQL statement if it doesn't complete in a specified time
69[`connect.js`](connect.js) | Basic example for creating a standalone (non-pooled) connection
70[`connectionpool.js`](connectionpool.js) | Basic example creating a pool of connections
71[`cqn1.js`](cqn1.js) | Basic Continuous Query Notification (CQN) example
72[`cqn2.js`](cqn2.js) | Continuous Query Notification with notification grouping
73[`date_timestamp1.js`](date_timestamp1.js) | Show some basic DATE and TIMESTAMP behaviors
74[`date_timestamp2.js`](date_timestamp2.js) | Show some DATE and TIMESTAMP behaviors with timezones
75[`dbconfig.js`](dbconfig.js) | Common file used by examples for setting connection credentials
76[`dbmsoutputgetline.js`](dbmsoutputgetline.js) | Show fetching DBMS_OUTPUT by binding buffers
77[`dbmsoutputpipe.js`](dbmsoutputpipe.js) | Show fetching DBMS_OUTPUT by using a pipelined table
78[`demodrop.js`](demodrop.js) | Drops the schema objects created by the examples
79[`demosetup.js`](demosetup.js) | Used to create common schema objects for the examples
80[`dmlrupd.js`](dmlrupd.js) | Example of DML RETURNING where multiple rows are matched
81[`em_batcherrors.js`](em_batcherrors.js) | `executeMany()` example showing handling data errors
82[`em_dmlreturn1.js`](em_dmlreturn1.js) | `executeMany()` example of DML RETURNING that returns single values
83[`em_dmlreturn2.js`](em_dmlreturn2.js) | `executeMany()` example of DML RETURNING that returns multiple values
84[`em_insert1.js`](em_insert1.js) | Array DML example using `executeMany()` with bind-by-name syntax
85[`em_insert2.js`](em_insert2.js) | Array DML example using `executeMany()` with bind by position
86[`em_plsql.js`](em_plsql.js) | `executeMany()` example calling PL/SQL multiple times with one call
87[`em_rowcounts.js`](em_rowcounts.js) | `executeMany()` example showing how to find the number of rows affected by each input row
88[`endtoend.js`](endtoend.js) | Example showing setting tracing attributes
89[`example.js`](example.js) | Basic example showing creating a table, inserting multiple rows, and querying rows
90[`impres.js`](impres.js) | Shows PL/SQL 'Implict Results' returning multiple query results from PL/SQL code.
91[`insert1.js`](insert1.js) | Basic example creating a table and inserting data. Shows DDL and DML
92[`insert2.js`](insert2.js) | Basic example showing auto commit behavior
93[`lastinsertid.js`](lastinsertid.js) | Shows inserting a row and getting its ROWID.
94[`lobbinds.js`](lobbinds.js) | Demonstrates how to bind and query LOBs
95[`lobinsert1.js`](lobinsert1.js) | Shows inserting a file into a CLOB column
96[`lobinsert2.js`](lobinsert2.js) | Inserts text into a CLOB column using the RETURNING INTO method.
97[`lobinserttemp.js`](lobinserttemp.js) | Writes data to a Temporary CLOB and then inserts it into the database
98[`lobplsqltemp.js`](lobplsqltemp.js) | Streams data into a Temporary CLOB and then passes it to PL/SQL
99[`lobselect.js`](lobselect.js) | Shows basic, non-streaming CLOB and BLOB queries
100[`lobstream1.js`](lobstream1.js) | Shows how to stream LOBs to files
101[`lobstream2.js`](lobstream2.js) | Shows using Stream data events to fetch a CLOB
102[`lowercasecolumns.js`](lowercasecolumns.js) | Shows how a type handler can convert column names to lower case
103[`metadata.js`](metadata.js) | Shows the metadata available after executing SELECT statements
104[`plsqlarray.js`](plsqlarray.js) | Examples of binding PL/SQL "INDEX BY" tables
105[`plsqlfunc.js`](plsqlfunc.js) | How to call a PL/SQL function
106[`plsqlproc.js`](plsqlproc.js) | How to call a PL/SQL procedure
107[`plsqlrecord.js`](plsqlrecord.js) | Shows binding of PL/SQL RECORDS
108[`plsqlvarrayrecord.js`](plsqlvarrayrecord.js) | Shows binding a VARRAY of RECORD in PL/SQL
109[`raw.js`](raw.js) | Shows using a Buffer to insert and select a RAW
110[`refcursor.js`](refcursor.js) | Shows using a ResultSet to fetch rows from a REF CURSOR
111[`refcursortoquerystream.js`](refcursortoquerystream.js) | Converts a REF CURSOR returned from `execute()` to a query stream.
112[`resultset1.js`](resultset1.js) | Executes a query and uses a ResultSet to fetch rows with `getRow()`
113[`resultset2.js`](resultset2.js) | Executes a query and uses a ResultSet to fetch batches of rows with `getRows()`
114[`resultsettoquerystream.js`](resultsettoquerystream.js) | Converts a ResultSet returned from `execute()` into a Readable Stream.
115[`rowlimit.js`](rowlimit.js) | Shows ways to limit the number of records fetched by queries
116[`sampleazuretokenauth.js`](sampleazuretokenauth.js) | Shows connection pooling with Azure token based authentication.
117[`sampleocitokenauth.js`](sampleocitokenauth.js) | Shows connection pooling with OCI OAuth 2.0 token based authentication.
118[`select1.js`](select1.js) | Executes a basic query without using a connection pool or ResultSet
119[`select2.js`](select2.js) | Executes queries to show array and object output formats
120[`selectgeometry.js`](selectgeometry.js) | Insert and query Oracle Spatial geometries
121[`selectjson.js`](selectjson.js) | Shows some JSON features of Oracle Database 21c
122[`selectjsonblob.js`](selectjsonblob.js) | Shows how to use a BLOB as a JSON column store
123[`selectobject.js`](selectobject.js) | Insert and query a named Oracle database object
124[`selectnestedcursor.js`](selectnestedcursor.js) | Shows selecting from a nested cursor
125[`selectstream.js`](selectstream.js) | Executes a basic query using a Readable Stream
126[`selectvarray.js`](selectvarray.js) | Shows inserting and selecting from a VARRAY column
127[`sessionfixup.js`](sessionfixup.js) | Shows a pooled connection callback to efficiently set session state
128[`sessiontagging1.js`](sessiontagging1.js) | Simple pooled connection tagging for setting session state
129[`sessiontagging2.js`](sessiontagging2.js) | More complex example of pooled connection tagging for setting session state
130[`soda1.js`](soda1.js) | Basic Simple Oracle Document Access (SODA) example
131[`typehandlerdate.js`](typehandlerdate.js) | Show how a type handler can format a queried date in a locale-specific way
132[`typehandlernum.js`](typehandlernum.js) | Show how a type handler can alter queried numbers
133[`version.js`](version.js) | Shows the node-oracledb version attributes
134[`webapp.js`](webapp.js) | A simple web application using a connection pool
135
\No newline at end of file