Search Shortcut cmd + k | ctrl + k
oracle_scanner

Read and write Oracle Database with no Oracle client

Maintainer(s): krokozyab

Installing and Loading

INSTALL oracle_scanner FROM community;
LOAD oracle_scanner;

Added Functions

function_name function_type description comment examples
oracle_arguments table Lists the arguments of every overload of an Oracle procedure or function, with the reason for any argument type this client cannot bind. NULL [SELECT * FROM oracle_arguments('demo', 'QUACK_DEMO_ADD');]
oracle_call table Calls an Oracle procedure whose only argument is an OUT SYS_REFCURSOR, and returns a cursor handle rather than the cursor's rows. NULL [SELECT * FROM oracle_call('demo', 'QUACK_DEMO_LIST', 'P_ROWS');]
oracle_call_auto table Reads an Oracle procedure's or function's signature from the data dictionary and calls it with the given values in argument declaration order. NULL [SELECT * FROM oracle_call_auto('demo', 'QUACK_DEMO_ADD', ['2', '3']);]
oracle_call_cursors table Calls an Oracle procedure whose arguments are the listed OUT SYS_REFCURSORs, and returns a cursor handle for each. NULL [SELECT * FROM oracle_call_cursors('demo', 'QUACK_DEMO_LIST', ['P_ROWS']);]
oracle_call_implicit table Calls an Oracle procedure that takes no arguments and returns a cursor handle for each implicit result set it returns. NULL [SELECT * FROM oracle_call_implicit('demo', 'QUACK_DEMO_IMPLICIT');]
oracle_call_inout_number table Passes a NUMBER, given as text, to an Oracle procedure's only argument, an IN OUT, and returns the updated value as text. NULL [SELECT * FROM oracle_call_inout_number('demo', 'QUACK_DEMO_DOUBLE', 'P_VALUE', '21');]
oracle_call_inout_varchar table Passes a VARCHAR2 to an Oracle procedure's only argument, an IN OUT, and returns the updated value. NULL [SELECT * FROM oracle_call_inout_varchar('demo', 'QUACK_DEMO_SHOUT', 'P_TEXT', 'quack');]
oracle_call_named table Calls an Oracle procedure with arguments whose names, directions, types and values are given explicitly, and returns its OUT values and cursor handles. NULL [SELECT * FROM oracle_call_named('demo', 'QUACK_DEMO_GREET', [{'name': 'P_NAME', 'direction': 'in', 'type': 'varchar', 'value': 'world'}, {'name': 'P_GREETING', 'direction': 'out', 'type': 'varchar', 'value': NULL}]);]
oracle_call_named_function table Calls an Oracle function with the given return type and explicitly described arguments, and returns its result and OUT values. NULL [SELECT * FROM oracle_call_named_function('demo', 'QUACK_DEMO_ADD', 'number', [{'name': 'P_A', 'direction': 'in', 'type': 'number', 'value': '2'}, {'name': 'P_B', 'direction': 'in', 'type': 'number', 'value': '3'}]);]
oracle_call_number table Calls an Oracle function that takes no arguments and returns NUMBER, and returns its result as text. NULL [SELECT * FROM oracle_call_number('demo', 'QUACK_DEMO_ANSWER');]
oracle_call_number_args table Calls an Oracle function that returns NUMBER with named IN arguments taken from a STRUCT, and returns its result as text. NULL [SELECT * FROM oracle_call_number_args('demo', 'QUACK_DEMO_ADD', {P_A: 2, P_B: 3});]
oracle_call_out_number table Calls an Oracle procedure whose only argument is a NUMBER OUT, and returns that value as text. NULL [SELECT * FROM oracle_call_out_number('demo', 'QUACK_DEMO_COUNT_DEPARTMENTS', 'P_COUNT');]
oracle_call_out_varchar table Calls an Oracle procedure whose only argument is a VARCHAR2 OUT, and returns that value. NULL [SELECT * FROM oracle_call_out_varchar('demo', 'QUACK_DEMO_MOTTO', 'P_TEXT');]
oracle_close_call table Closes the remaining registered cursors of the whole call a cursor handle belongs to, and returns closed. NULL [SELECT * FROM oracle_close_call(getvariable('oracle_close_handle'));]
oracle_cursor table Consumes a cursor handle created earlier on the same DuckDB connection and returns the cursor's rows. NULL [SELECT * FROM oracle_cursor(getvariable('oracle_example_handle'));]
oracle_execute table Runs one Oracle INSERT, UPDATE or DELETE with optional positional or named bind parameters, commits it in Oracle, and returns affected_rows. NULL [SELECT * FROM oracle_execute('demo', 'INSERT INTO QUACK_DEMO_LOG (LABEL, AMOUNT) VALUES (:label, :amount)', {'label': 'example', 'amount': 1.5});]
oracle_execute_many table Runs one Oracle INSERT, UPDATE or DELETE once for each bind record in a list using array DML, commits it in Oracle, and returns the total affected_rows. NULL [SELECT * FROM oracle_execute_many('demo', 'INSERT INTO QUACK_DEMO_LOG (LABEL, AMOUNT) VALUES (:label, :amount)', [{'label': 'a', 'amount': 1.5}, {'label': 'b', 'amount': 2.5}]);]
oracle_query table Runs an Oracle SELECT query with optional positional or named bind parameters and returns its rows. NULL [SELECT * FROM oracle_query('demo', 'SELECT :1 AS value FROM dual', [42]);]
oracle_scan_parallel table Reads one Oracle table through several sessions in ranges of an integral NUMBER key, all at a single SCN. NULL [SELECT * FROM oracle_scan_parallel('demo', 'QUACK_DEMO_DEPARTMENTS', 'DEPARTMENT_ID', shards := 4);]
oracle_scanner_version scalar Returns the version of this oracle_scanner build. NULL [oracle_scanner_version()]

Overloaded Functions

This extension does not add any function overloads.

Added Types

This extension does not add any types.

Added Settings

name description input_type scope aliases
oracle_filter_pushdown Send WHERE predicates on an attached Oracle table to Oracle. Only filters whose Oracle meaning is provably identical are translated; anything else raises. BOOLEAN GLOBAL []
oracle_session_pool_size How many authenticated Oracle sessions one DuckDB connection keeps for reuse, per secret. 0 opens a fresh session for every statement. BIGINT GLOBAL []