Packages
jamdb_oracle
0.5.8
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
retired
0.5.1
retired
0.5.0
retired
0.4.12
retired
0.4.11
retired
0.4.10
retired
0.4.9
retired
0.4.8
retired
0.4.7
retired
0.4.6
retired
0.4.5
retired
0.4.4
retired
0.4.3
retired
0.4.2
retired
0.4.1
retired
0.4.0
retired
0.3.10
retired
0.3.9
retired
0.3.8
retired
0.3.7
retired
0.3.6
retired
0.3.5
retired
0.3.4
retired
0.3.3
retired
0.3.2
retired
0.3.1
retired
0.3.0
retired
0.2.7
retired
0.2.6
retired
0.2.5
retired
0.2.4
retired
0.2.3
retired
0.2.2
retired
0.2.1
retired
0.2.0
retired
0.1.6
retired
0.1.5
retired
0.1.4
retired
0.1.3
retired
0.1.2
retired
0.1.1
retired
0.1.0
retired
0.0.10
retired
0.0.9
retired
0.0.8
retired
0.0.7
retired
0.0.6
retired
0.0.5
retired
0.0.4
retired
0.0.3
retired
0.0.2
retired
0.0.1
retired
Erlang driver and Ecto adapter for Oracle
Current section
Files
Jump to
Current section
Files
src/jamdb_oracle.erl
-module(jamdb_oracle).
-vsn("0.5.8").
-behaviour(gen_server).
%% API
-export([start_link/1, start/1]).
-export([stop/1]).
-export([sql_query/2, sql_query/3]).
%% gen_server callbacks
-export([init/1, terminate/2]).
-export([handle_call/3, handle_cast/2, handle_info/2]).
-export([code_change/3]).
-define(default_timeout, 5000).
%% API
-spec start_link(jamdb_oracle_conn:options()) -> {ok, pid()} | {error, term()}.
start_link(Opts) when is_list(Opts) ->
gen_server:start_link(?MODULE, Opts, []).
-spec start(jamdb_oracle_conn:options()) -> {ok, pid()} | {error, term()}.
start(Opts) when is_list(Opts) ->
gen_server:start(?MODULE, Opts, []).
-spec stop(pid()) -> ok.
stop(Pid) ->
gen_server:call(Pid, stop).
sql_query(Pid, Query, Tout) ->
gen_server:call(Pid, {sql_query, Query, Tout}, Tout).
sql_query(Pid, Query) ->
gen_server:call(Pid, {sql_query, Query, ?default_timeout}).
%% gen_server callbacks
init(Opts) ->
case jamdb_oracle_conn:connect(Opts) of
{ok, State} ->
{ok, State};
{ok, Result, _State} ->
{stop, Result};
{error, Type, Result, _State} ->
{stop, {Type, Result}}
end.
%% Error types: socket, remote, local
handle_call({sql_query, Query, Tout}, _From, State) ->
try jamdb_oracle_conn:sql_query(State, Query, Tout) of
{ok, Result, State2} ->
{reply, {ok, Result}, State2};
{error, Type, Reason, State2} ->
{reply, {error, Type, Reason}, State2}
catch
error:_Reason ->
{stop, normal, State}
end;
handle_call(stop, _From, State) ->
try jamdb_oracle_conn:disconnect(State, 1) of
{ok, _Result} ->
{stop, normal, ok, State}
catch
error:_Reason ->
{stop, normal, State}
end;
handle_call(_Request, _From, State) ->
{reply, ok, State}.
handle_cast(_Msg, State) ->
{noreply, State}.
handle_info(timeout, State) ->
{stop, normal, State};
handle_info(_Info, State) ->
{noreply, State}.
terminate(_Reason, _State) ->
ok.
code_change(_OldVsn, State, _Extra) ->
{ok, State}.