А>Есть приложение, которое работает с базой данных. Хочется, чтобы в зависимости от аргументов командной строки, оно конектилось либо к.. ммм.. ну пусть будет mysql, либо к oracle.
В общем, придется курить, например,
erlydb
Берем
erlydb.erl:
start(Driver) ->
start(Driver, []).
start(mysql, Options) ->
[Hostname, Port, Username, Password, Database, OtherOptions] =
lists:foldl(
fun(Key, Acc) ->
[proplists:lookup(Key, Options) | Acc]
end, [],
lists:reverse([hostname, port, username, password, database,
options])),
erlydb_mysql:connect(Hostname, Port, Username, Password, Database,
OtherOptions);
start(_Driver, _Options) ->
{error, driver_not_supported}.
то есть этот код вызывается тривиально:
erlydb:start(mysql).
% или там
erlydb:start(mnesia). % хотя поддержка mnesia еще не добавлена
% но планируется
... << RSDN@Home 1.2.0 alpha rev. 655>>