Oracle Pro*C a vic konektu do databaze

Ludek Rasek ludek.rasek na pvt.cz
Pátek Prosinec 8 10:53:01 CET 2000


Libor Chocholaty wrote:
> 
> Dobry den,
> jak na to? Precetl jsem uz celkem dost dokumentace, ale nenasel jsem nic
> co by alespon naznacovalo, ze to jde. Nechci "fork" bombu :-) Potrebuji
> to v jednom procesu.
asi takhle deklarovat ...
 EXEC SQL DECLARE DB_DATA DATABASE;
 EXEC SQL DECLARE DB_LOG  DATABASE;

...pak takhle pouzit
EXEC SQL AT DB_DATA          // tady je jmeno db
 DECLARE curname CURSOR FOR
 SELECT * FROM table_name

... a takhle zavrit (pokud chcete commitovat, tak to udelejte predtim)
EXEC SQL AT DB_LOG ROLLBACK RELEASE 

... a pokud to chcete pouzit spolecne s OCI (treba pro bloby), tak pri
alokaci service contextu 
musite predat jmeno db konexe (v prikladu DB_DATA) do funkce
SQLSvcCtxGet:
SQLSvcCtxGet( (dvoid *)SQL_SINGLE_RCTX, (text *)"DB_DATA",
(sb4)strlen("DB_DATA"), (OCISvcCtx **)&svchp )

A jeste upozorneni - davejte pozor na deadlock napr. radek po
nezakomitovanem insertu je zamceny a pokud k nemu pristoupite ze druhe
konexe, kde se vzal, tu se vzal deadlock:-).

Ludek


Další informace o konferenci Test