OciCalls.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826
  1. //
  2. // OciCalls.cs
  3. //
  4. // Part of the Mono class libraries at
  5. // mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci
  6. //
  7. // Assembly: System.Data.OracleClient.dll
  8. // Namespace: System.Data.OracleClient.Oci
  9. //
  10. // Authors: Joerg Rosenkranz <[email protected]>
  11. //
  12. // Copyright (C) Joerg Rosenkranz, 2004
  13. //
  14. // Licensed under the MIT/X11 License.
  15. //
  16. using System;
  17. using System.Diagnostics;
  18. using System.Runtime.InteropServices;
  19. using System.Text;
  20. namespace System.Data.OracleClient.Oci
  21. {
  22. internal sealed class OciCalls
  23. {
  24. private static bool traceOci;
  25. #if TRACE
  26. static OciCalls()
  27. {
  28. string env = Environment.GetEnvironmentVariable("OCI_TRACE");
  29. traceOci = (env != null && env.Length > 0);
  30. }
  31. #endif
  32. private OciCalls ()
  33. {}
  34. #region OCI native calls
  35. private sealed class OciNativeCalls
  36. {
  37. private OciNativeCalls ()
  38. {}
  39. [DllImport ("oci", EntryPoint = "OCIAttrSet")]
  40. internal static extern int OCIAttrSet (IntPtr trgthndlp,
  41. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  42. IntPtr attributep,
  43. uint size,
  44. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  45. IntPtr errhp);
  46. [DllImport ("oci", EntryPoint = "OCIAttrSet")]
  47. internal static extern int OCIAttrSetString (IntPtr trgthndlp,
  48. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  49. string attributep,
  50. uint size,
  51. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  52. IntPtr errhp);
  53. [DllImport ("oci")]
  54. internal static extern int OCIErrorGet (IntPtr hndlp,
  55. uint recordno,
  56. IntPtr sqlstate,
  57. out int errcodep,
  58. IntPtr bufp,
  59. uint bufsize,
  60. [MarshalAs (UnmanagedType.U4)] OciHandleType type);
  61. [DllImport ("oci")]
  62. internal static extern int OCIBindByName (IntPtr stmtp,
  63. out IntPtr bindpp,
  64. IntPtr errhp,
  65. string placeholder,
  66. int placeh_len,
  67. IntPtr valuep,
  68. int value_sz,
  69. [MarshalAs (UnmanagedType.U2)] OciDataType dty,
  70. int indp,
  71. IntPtr alenp,
  72. IntPtr rcodep,
  73. uint maxarr_len,
  74. IntPtr curelp,
  75. uint mode);
  76. [DllImport ("oci")]
  77. internal static extern int OCIDefineByPos (IntPtr stmtp,
  78. out IntPtr defnpp,
  79. IntPtr errhp,
  80. [MarshalAs (UnmanagedType.U4)] int position,
  81. IntPtr valuep,
  82. int value_sz,
  83. [MarshalAs (UnmanagedType.U4)] OciDataType dty,
  84. ref short indp,
  85. ref short rlenp,
  86. IntPtr rcodep,
  87. uint mode);
  88. [DllImport ("oci", EntryPoint="OCIDefineByPos")]
  89. internal static extern int OCIDefineByPosPtr (IntPtr stmtp,
  90. out IntPtr defnpp,
  91. IntPtr errhp,
  92. [MarshalAs (UnmanagedType.U4)] int position,
  93. ref IntPtr valuep,
  94. int value_sz,
  95. [MarshalAs (UnmanagedType.U4)] OciDataType dty,
  96. ref short indp,
  97. ref short rlenp,
  98. IntPtr rcodep,
  99. uint mode);
  100. [DllImport ("oci")]
  101. internal static extern int OCIDescriptorFree (IntPtr hndlp,
  102. [MarshalAs (UnmanagedType.U4)] OciHandleType type);
  103. [DllImport ("oci")]
  104. internal static extern int OCIEnvCreate (out IntPtr envhpp,
  105. [MarshalAs (UnmanagedType.U4)] OciEnvironmentMode mode,
  106. IntPtr ctxp,
  107. IntPtr malocfp,
  108. IntPtr ralocfp,
  109. IntPtr mfreep,
  110. int xtramem_sz,
  111. IntPtr usrmempp);
  112. [DllImport ("oci")]
  113. internal static extern int OCIAttrGet (IntPtr trgthndlp,
  114. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  115. out IntPtr attributep,
  116. out int sizep,
  117. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  118. IntPtr errhp);
  119. [DllImport ("oci", EntryPoint = "OCIAttrGet")]
  120. internal static extern int OCIAttrGetSByte (IntPtr trgthndlp,
  121. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  122. out sbyte attributep,
  123. IntPtr sizep,
  124. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  125. IntPtr errhp);
  126. [DllImport ("oci", EntryPoint = "OCIAttrGet")]
  127. internal static extern int OCIAttrGetByte (IntPtr trgthndlp,
  128. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  129. out byte attributep,
  130. IntPtr sizep,
  131. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  132. IntPtr errhp);
  133. [DllImport ("oci", EntryPoint = "OCIAttrGet")]
  134. internal static extern int OCIAttrGetUInt16 (IntPtr trgthndlp,
  135. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  136. out ushort attributep,
  137. IntPtr sizep,
  138. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  139. IntPtr errhp);
  140. [DllImport ("oci", EntryPoint = "OCIAttrGet")]
  141. internal static extern int OCIAttrGetInt32 (IntPtr trgthndlp,
  142. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  143. out int attributep,
  144. IntPtr sizep,
  145. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  146. IntPtr errhp);
  147. [DllImport ("oci", EntryPoint = "OCIAttrGet")]
  148. internal static extern int OCIAttrGetIntPtr (IntPtr trgthndlp,
  149. [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
  150. out IntPtr attributep,
  151. IntPtr sizep,
  152. [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
  153. IntPtr errhp);
  154. [DllImport ("oci")]
  155. internal static extern int OCIDescriptorAlloc (IntPtr parenth,
  156. out IntPtr hndlpp,
  157. [MarshalAs (UnmanagedType.U4)] OciHandleType type,
  158. int xtramem_sz,
  159. IntPtr usrmempp);
  160. [DllImport ("oci")]
  161. internal static extern int OCIHandleAlloc (IntPtr parenth,
  162. out IntPtr descpp,
  163. [MarshalAs (UnmanagedType.U4)] OciHandleType type,
  164. int xtramem_sz,
  165. IntPtr usrmempp);
  166. [DllImport ("oci")]
  167. internal static extern int OCIHandleFree (IntPtr hndlp,
  168. [MarshalAs (UnmanagedType.U4)] OciHandleType type);
  169. [DllImport ("oci")]
  170. internal static extern int OCILobClose (IntPtr svchp,
  171. IntPtr errhp,
  172. IntPtr locp);
  173. [DllImport ("oci")]
  174. internal static extern int OCILobCopy (IntPtr svchp,
  175. IntPtr errhp,
  176. IntPtr dst_locp,
  177. IntPtr src_locp,
  178. uint amount,
  179. uint dst_offset,
  180. uint src_offset);
  181. [DllImport ("oci")]
  182. internal static extern int OCILobErase (IntPtr svchp,
  183. IntPtr errhp,
  184. IntPtr locp,
  185. ref uint amount,
  186. uint offset);
  187. [DllImport ("oci")]
  188. internal static extern int OCILobGetChunkSize (IntPtr svchp,
  189. IntPtr errhp,
  190. IntPtr locp,
  191. out uint chunk_size);
  192. [DllImport ("oci")]
  193. internal static extern int OCILobGetLength (IntPtr svchp,
  194. IntPtr errhp,
  195. IntPtr locp,
  196. out uint lenp);
  197. [DllImport ("oci")]
  198. internal static extern int OCILobOpen (IntPtr svchp,
  199. IntPtr errhp,
  200. IntPtr locp,
  201. byte mode);
  202. [DllImport ("oci")]
  203. internal static extern int OCILobRead (IntPtr svchp,
  204. IntPtr errhp,
  205. IntPtr locp,
  206. ref uint amtp,
  207. uint offset,
  208. byte[] bufp,
  209. uint bufl,
  210. IntPtr ctxp,
  211. IntPtr cbfp,
  212. ushort csid,
  213. byte csfrm);
  214. [DllImport ("oci")]
  215. internal static extern int OCILobTrim (IntPtr svchp,
  216. IntPtr errhp,
  217. IntPtr locp,
  218. uint newlen);
  219. [DllImport ("oci")]
  220. internal static extern int OCILobWrite (IntPtr svchp,
  221. IntPtr errhp,
  222. IntPtr locp,
  223. ref uint amtp,
  224. uint offset,
  225. byte[] bufp,
  226. uint bufl,
  227. byte piece,
  228. IntPtr ctxp,
  229. IntPtr cbfp,
  230. ushort csid,
  231. byte csfrm);
  232. [DllImport ("oci")]
  233. internal static extern int OCIServerAttach (IntPtr srvhp,
  234. IntPtr errhp,
  235. string dblink,
  236. [MarshalAs (UnmanagedType.U4)] int dblink_len,
  237. uint mode);
  238. [DllImport ("oci")]
  239. internal static extern int OCIServerDetach (IntPtr srvhp,
  240. IntPtr errhp,
  241. uint mode);
  242. [DllImport ("oci")]
  243. internal static extern int OCIServerVersion (IntPtr hndlp,
  244. IntPtr errhp,
  245. [In][Out] byte[] bufp,
  246. uint bufsz,
  247. [MarshalAs (UnmanagedType.U4)] OciHandleType type);
  248. [DllImport ("oci")]
  249. internal static extern int OCISessionBegin (IntPtr svchp,
  250. IntPtr errhp,
  251. IntPtr usrhp,
  252. [MarshalAs (UnmanagedType.U4)] OciCredentialType credt,
  253. [MarshalAs (UnmanagedType.U4)] OciSessionMode mode);
  254. [DllImport ("oci")]
  255. internal static extern int OCISessionEnd (IntPtr svchp,
  256. IntPtr errhp,
  257. IntPtr usrhp,
  258. uint mode);
  259. [DllImport ("oci")]
  260. internal static extern int OCIParamGet (IntPtr hndlp,
  261. [MarshalAs (UnmanagedType.U4)] OciHandleType htype,
  262. IntPtr errhp,
  263. out IntPtr parmdpp,
  264. [MarshalAs (UnmanagedType.U4)] int pos);
  265. [DllImport ("oci")]
  266. internal static extern int OCIStmtExecute (IntPtr svchp,
  267. IntPtr stmthp,
  268. IntPtr errhp,
  269. [MarshalAs (UnmanagedType.U4)] uint iters,
  270. uint rowoff,
  271. IntPtr snap_in,
  272. IntPtr snap_out,
  273. [MarshalAs (UnmanagedType.U4)] OciExecuteMode mode);
  274. [DllImport ("oci")]
  275. internal static extern int OCIStmtFetch (IntPtr stmtp,
  276. IntPtr errhp,
  277. uint nrows,
  278. ushort orientation,
  279. uint mode);
  280. [DllImport ("oci")]
  281. internal static extern int OCIStmtPrepare (IntPtr stmthp,
  282. IntPtr errhp,
  283. byte [] stmt,
  284. [MarshalAs (UnmanagedType.U4)] int stmt_length,
  285. [MarshalAs (UnmanagedType.U4)] OciStatementLanguage language,
  286. [MarshalAs (UnmanagedType.U4)] OciStatementMode mode);
  287. [DllImport ("oci")]
  288. internal static extern int OCITransCommit (IntPtr svchp,
  289. IntPtr errhp,
  290. uint flags);
  291. [DllImport ("oci")]
  292. internal static extern int OCITransRollback (IntPtr svchp,
  293. IntPtr errhp,
  294. uint flags);
  295. [DllImport ("oci")]
  296. internal static extern int OCITransStart (IntPtr svchp,
  297. IntPtr errhp,
  298. uint timeout,
  299. [MarshalAs (UnmanagedType.U4)] OciTransactionFlags flags);
  300. [DllImport ("oci")]
  301. internal static extern int OCICharSetToUnicode (
  302. IntPtr svchp,
  303. [MarshalAs (UnmanagedType.LPWStr)] StringBuilder dst,
  304. [MarshalAs (UnmanagedType.U4)] int dstlen,
  305. byte [] src,
  306. [MarshalAs (UnmanagedType.U4)] int srclen,
  307. [MarshalAs (UnmanagedType.U4)] out int rsize);
  308. [DllImport ("oci")]
  309. internal static extern int OCIUnicodeToCharSet (
  310. IntPtr svchp,
  311. byte [] dst,
  312. [MarshalAs (UnmanagedType.U4)] int dstlen,
  313. [MarshalAs (UnmanagedType.LPWStr)] string src,
  314. [MarshalAs (UnmanagedType.U4)] int srclen,
  315. [MarshalAs (UnmanagedType.U4)] out int rsize);
  316. }
  317. #endregion
  318. #region OCI call wrappers
  319. internal static int OCIAttrSet (IntPtr trgthndlp,
  320. OciHandleType trghndltyp,
  321. IntPtr attributep,
  322. uint size,
  323. OciAttributeType attrtype,
  324. IntPtr errhp)
  325. {
  326. Trace.WriteLineIf(traceOci, string.Format("OCIAttrSet ({0}, {1})", trghndltyp, attrtype), "OCI");
  327. return OciNativeCalls.OCIAttrSet (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
  328. }
  329. internal static int OCIAttrSetString (IntPtr trgthndlp,
  330. OciHandleType trghndltyp,
  331. string attributep,
  332. uint size,
  333. OciAttributeType attrtype,
  334. IntPtr errhp)
  335. {
  336. Trace.WriteLineIf(traceOci, string.Format("OCIAttrSetString ({0}, {1})", trghndltyp, attrtype), "OCI");
  337. return OciNativeCalls.OCIAttrSetString (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
  338. }
  339. internal static int OCIErrorGet (IntPtr hndlp,
  340. uint recordno,
  341. IntPtr sqlstate,
  342. out int errcodep,
  343. IntPtr bufp,
  344. uint bufsize,
  345. OciHandleType type)
  346. {
  347. Trace.WriteLineIf(traceOci, "OCIErrorGet", "OCI");
  348. return OciNativeCalls.OCIErrorGet (hndlp, recordno, sqlstate, out errcodep, bufp, bufsize, type);
  349. }
  350. internal static int OCIBindByName (IntPtr stmtp,
  351. out IntPtr bindpp,
  352. IntPtr errhp,
  353. string placeholder,
  354. int placeh_len,
  355. IntPtr valuep,
  356. int value_sz,
  357. OciDataType dty,
  358. int indp,
  359. IntPtr alenp,
  360. IntPtr rcodep,
  361. uint maxarr_len,
  362. IntPtr curelp,
  363. uint mode)
  364. {
  365. Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
  366. return OciNativeCalls.OCIBindByName (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
  367. value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
  368. }
  369. internal static int OCIDefineByPos (IntPtr stmtp,
  370. out IntPtr defnpp,
  371. IntPtr errhp,
  372. int position,
  373. IntPtr valuep,
  374. int value_sz,
  375. OciDataType dty,
  376. ref short indp,
  377. ref short rlenp,
  378. IntPtr rcodep,
  379. uint mode)
  380. {
  381. Trace.WriteLineIf(traceOci, "OCIDefineByPos", "OCI");
  382. return OciNativeCalls.OCIDefineByPos (stmtp, out defnpp, errhp, position, valuep,
  383. value_sz, dty, ref indp, ref rlenp, rcodep, mode);
  384. }
  385. internal static int OCIDefineByPosPtr (IntPtr stmtp,
  386. out IntPtr defnpp,
  387. IntPtr errhp,
  388. int position,
  389. ref IntPtr valuep,
  390. int value_sz,
  391. OciDataType dty,
  392. ref short indp,
  393. ref short rlenp,
  394. IntPtr rcodep,
  395. uint mode)
  396. {
  397. Trace.WriteLineIf(traceOci, "OCIDefineByPosPtr", "OCI");
  398. return OciNativeCalls.OCIDefineByPosPtr (stmtp, out defnpp, errhp, position, ref valuep,
  399. value_sz, dty, ref indp, ref rlenp, rcodep, mode);
  400. }
  401. internal static int OCIDescriptorFree (IntPtr hndlp,
  402. OciHandleType type)
  403. {
  404. Trace.WriteLineIf(traceOci, string.Format("OCIDescriptorFree ({0})", type), "OCI");
  405. return OciNativeCalls.OCIDescriptorFree (hndlp, type);
  406. }
  407. internal static int OCIEnvCreate (out IntPtr envhpp,
  408. OciEnvironmentMode mode,
  409. IntPtr ctxp,
  410. IntPtr malocfp,
  411. IntPtr ralocfp,
  412. IntPtr mfreep,
  413. int xtramem_sz,
  414. IntPtr usrmempp)
  415. {
  416. Trace.WriteLineIf(traceOci, "OCIEnvCreate", "OCI");
  417. return OciNativeCalls.OCIEnvCreate (out envhpp, mode, ctxp, malocfp, ralocfp, mfreep,
  418. xtramem_sz, usrmempp);
  419. }
  420. internal static int OCIAttrGet (IntPtr trgthndlp,
  421. OciHandleType trghndltyp,
  422. out IntPtr attributep,
  423. out int sizep,
  424. OciAttributeType attrtype,
  425. IntPtr errhp)
  426. {
  427. Trace.WriteLineIf(traceOci, "OCIAttrGet", "OCI");
  428. return OciNativeCalls.OCIAttrGet (trgthndlp, trghndltyp, out attributep, out sizep, attrtype, errhp);
  429. }
  430. internal static int OCIAttrGetSByte (IntPtr trgthndlp,
  431. OciHandleType trghndltyp,
  432. out sbyte attributep,
  433. IntPtr sizep,
  434. OciAttributeType attrtype,
  435. IntPtr errhp)
  436. {
  437. Trace.WriteLineIf(traceOci, "OCIAttrGetSByte", "OCI");
  438. return OciNativeCalls.OCIAttrGetSByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  439. }
  440. internal static int OCIAttrGetByte (IntPtr trgthndlp,
  441. OciHandleType trghndltyp,
  442. out byte attributep,
  443. IntPtr sizep,
  444. OciAttributeType attrtype,
  445. IntPtr errhp)
  446. {
  447. Trace.WriteLineIf(traceOci, "OCIAttrGetByte", "OCI");
  448. return OciNativeCalls.OCIAttrGetByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  449. }
  450. internal static int OCIAttrGetUInt16 (IntPtr trgthndlp,
  451. OciHandleType trghndltyp,
  452. out ushort attributep,
  453. IntPtr sizep,
  454. OciAttributeType attrtype,
  455. IntPtr errhp)
  456. {
  457. Trace.WriteLineIf(traceOci, "OCIAttrGetUInt16", "OCI");
  458. return OciNativeCalls.OCIAttrGetUInt16 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  459. }
  460. internal static int OCIAttrGetInt32 (IntPtr trgthndlp,
  461. OciHandleType trghndltyp,
  462. out int attributep,
  463. IntPtr sizep,
  464. OciAttributeType attrtype,
  465. IntPtr errhp)
  466. {
  467. Trace.WriteLineIf(traceOci, "OCIAttrGetInt32", "OCI");
  468. return OciNativeCalls.OCIAttrGetInt32 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  469. }
  470. internal static int OCIAttrGetIntPtr (IntPtr trgthndlp,
  471. OciHandleType trghndltyp,
  472. out IntPtr attributep,
  473. IntPtr sizep,
  474. OciAttributeType attrtype,
  475. IntPtr errhp)
  476. {
  477. Trace.WriteLineIf(traceOci, "OCIAttrGetIntPtr", "OCI");
  478. return OciNativeCalls.OCIAttrGetIntPtr (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  479. }
  480. internal static int OCIDescriptorAlloc (IntPtr parenth,
  481. out IntPtr hndlpp,
  482. OciHandleType type,
  483. int xtramem_sz,
  484. IntPtr usrmempp)
  485. {
  486. Trace.WriteLineIf(traceOci, "OCIDescriptorAlloc", "OCI");
  487. return OciNativeCalls.OCIDescriptorAlloc (parenth, out hndlpp, type, xtramem_sz, usrmempp);
  488. }
  489. internal static int OCIHandleAlloc (IntPtr parenth,
  490. out IntPtr descpp,
  491. OciHandleType type,
  492. int xtramem_sz,
  493. IntPtr usrmempp)
  494. {
  495. Trace.WriteLineIf(traceOci, string.Format("OCIHandleAlloc ({0})", type), "OCI");
  496. return OciNativeCalls.OCIHandleAlloc (parenth, out descpp, type, xtramem_sz, usrmempp);
  497. }
  498. internal static int OCIHandleFree (IntPtr hndlp,
  499. OciHandleType type)
  500. {
  501. Trace.WriteLineIf(traceOci, string.Format("OCIHandleFree ({0})", type), "OCI");
  502. return OciNativeCalls.OCIHandleFree (hndlp, type);
  503. }
  504. internal static int OCILobClose (IntPtr svchp,
  505. IntPtr errhp,
  506. IntPtr locp)
  507. {
  508. Trace.WriteLineIf(traceOci, "OCILobClose", "OCI");
  509. return OciNativeCalls.OCILobClose (svchp, errhp, locp);
  510. }
  511. internal static int OCILobCopy (IntPtr svchp,
  512. IntPtr errhp,
  513. IntPtr dst_locp,
  514. IntPtr src_locp,
  515. uint amount,
  516. uint dst_offset,
  517. uint src_offset)
  518. {
  519. Trace.WriteLineIf(traceOci, "OCILobCopy", "OCI");
  520. return OciNativeCalls.OCILobCopy (svchp, errhp, dst_locp, src_locp, amount, dst_offset, src_offset);
  521. }
  522. internal static int OCILobErase (IntPtr svchp,
  523. IntPtr errhp,
  524. IntPtr locp,
  525. ref uint amount,
  526. uint offset)
  527. {
  528. Trace.WriteLineIf(traceOci, "OCILobErase", "OCI");
  529. return OciNativeCalls.OCILobErase (svchp, errhp, locp, ref amount, offset);
  530. }
  531. internal static int OCILobGetChunkSize (IntPtr svchp,
  532. IntPtr errhp,
  533. IntPtr locp,
  534. out uint chunk_size)
  535. {
  536. Trace.WriteLineIf(traceOci, "OCILobGetChunkSize", "OCI");
  537. return OciNativeCalls.OCILobGetChunkSize (svchp, errhp, locp, out chunk_size);
  538. }
  539. internal static int OCILobGetLength (IntPtr svchp,
  540. IntPtr errhp,
  541. IntPtr locp,
  542. out uint lenp)
  543. {
  544. Trace.WriteLineIf(traceOci, "OCILobGetLength", "OCI");
  545. return OciNativeCalls.OCILobGetLength (svchp, errhp, locp, out lenp);
  546. }
  547. internal static int OCILobOpen (IntPtr svchp,
  548. IntPtr errhp,
  549. IntPtr locp,
  550. byte mode)
  551. {
  552. Trace.WriteLineIf(traceOci, "OCILobOpen", "OCI");
  553. return OciNativeCalls.OCILobOpen (svchp, errhp, locp, mode);
  554. }
  555. internal static int OCILobRead (IntPtr svchp,
  556. IntPtr errhp,
  557. IntPtr locp,
  558. ref uint amtp,
  559. uint offset,
  560. byte[] bufp,
  561. uint bufl,
  562. IntPtr ctxp,
  563. IntPtr cbfp,
  564. ushort csid,
  565. byte csfrm)
  566. {
  567. Trace.WriteLineIf(traceOci, "OCILobRead", "OCI");
  568. return OciNativeCalls.OCILobRead (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
  569. ctxp, cbfp, csid, csfrm);
  570. }
  571. internal static int OCILobTrim (IntPtr svchp,
  572. IntPtr errhp,
  573. IntPtr locp,
  574. uint newlen)
  575. {
  576. Trace.WriteLineIf(traceOci, "OCILobTrim", "OCI");
  577. return OciNativeCalls.OCILobTrim (svchp, errhp, locp, newlen);
  578. }
  579. internal static int OCILobWrite (IntPtr svchp,
  580. IntPtr errhp,
  581. IntPtr locp,
  582. ref uint amtp,
  583. uint offset,
  584. byte[] bufp,
  585. uint bufl,
  586. byte piece,
  587. IntPtr ctxp,
  588. IntPtr cbfp,
  589. ushort csid,
  590. byte csfrm)
  591. {
  592. Trace.WriteLineIf(traceOci, "OCILobWrite", "OCI");
  593. return OciNativeCalls.OCILobWrite (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
  594. piece, ctxp, cbfp, csid, csfrm);
  595. }
  596. internal static int OCIServerAttach (IntPtr srvhp,
  597. IntPtr errhp,
  598. string dblink,
  599. int dblink_len,
  600. uint mode)
  601. {
  602. Trace.WriteLineIf(traceOci, "OCIServerAttach", "OCI");
  603. return OciNativeCalls.OCIServerAttach (srvhp, errhp, dblink, dblink_len, mode);
  604. }
  605. internal static int OCIServerDetach (IntPtr srvhp,
  606. IntPtr errhp,
  607. uint mode)
  608. {
  609. Trace.WriteLineIf(traceOci, "OCIServerDetach", "OCI");
  610. return OciNativeCalls.OCIServerDetach (srvhp, errhp, mode);
  611. }
  612. internal static int OCIServerVersion (IntPtr hndlp,
  613. IntPtr errhp,
  614. ref byte[] bufp,
  615. uint bufsz,
  616. OciHandleType hndltype)
  617. {
  618. Trace.WriteLineIf(traceOci, "OCIServerVersion", "OCI");
  619. return OciNativeCalls.OCIServerVersion (hndlp,
  620. errhp,
  621. bufp,
  622. bufsz,
  623. hndltype);
  624. }
  625. internal static int OCISessionBegin (IntPtr svchp,
  626. IntPtr errhp,
  627. IntPtr usrhp,
  628. OciCredentialType credt,
  629. OciSessionMode mode)
  630. {
  631. Trace.WriteLineIf(traceOci, "OCISessionBegin", "OCI");
  632. return OciNativeCalls.OCISessionBegin (svchp, errhp, usrhp, credt, mode);
  633. }
  634. internal static int OCISessionEnd (IntPtr svchp,
  635. IntPtr errhp,
  636. IntPtr usrhp,
  637. uint mode)
  638. {
  639. Trace.WriteLineIf(traceOci, "OCISessionEnd", "OCI");
  640. return OciNativeCalls.OCISessionEnd (svchp, errhp, usrhp, mode);
  641. }
  642. internal static int OCIParamGet (IntPtr hndlp,
  643. OciHandleType htype,
  644. IntPtr errhp,
  645. out IntPtr parmdpp,
  646. int pos)
  647. {
  648. Trace.WriteLineIf(traceOci, "OCIParamGet", "OCI");
  649. return OciNativeCalls.OCIParamGet (hndlp, htype, errhp, out parmdpp, pos);
  650. }
  651. internal static int OCIStmtExecute (IntPtr svchp,
  652. IntPtr stmthp,
  653. IntPtr errhp,
  654. bool iters,
  655. uint rowoff,
  656. IntPtr snap_in,
  657. IntPtr snap_out,
  658. OciExecuteMode mode)
  659. {
  660. Trace.WriteLineIf(traceOci, "OCIStmtExecute", "OCI");
  661. uint it = 0;
  662. if (iters == true)
  663. it = 1;
  664. return OciNativeCalls.OCIStmtExecute (svchp, stmthp, errhp, it, rowoff,
  665. snap_in, snap_out, mode);
  666. }
  667. internal static int OCIStmtFetch (IntPtr stmtp,
  668. IntPtr errhp,
  669. uint nrows,
  670. ushort orientation,
  671. uint mode)
  672. {
  673. Trace.WriteLineIf(traceOci, "OCIStmtFetch", "OCI");
  674. return OciNativeCalls.OCIStmtFetch (stmtp, errhp, nrows, orientation, mode);
  675. }
  676. internal static int OCIStmtPrepare (IntPtr stmthp,
  677. IntPtr errhp,
  678. byte [] stmt,
  679. int stmt_length,
  680. OciStatementLanguage language,
  681. OciStatementMode mode)
  682. {
  683. Trace.WriteLineIf(traceOci, string.Format("OCIStmtPrepare ({0})", System.Text.Encoding.UTF8.GetString(stmt)), "OCI");
  684. return OciNativeCalls.OCIStmtPrepare (stmthp, errhp, stmt, stmt_length, language, mode);
  685. }
  686. internal static int OCITransCommit (IntPtr svchp,
  687. IntPtr errhp,
  688. uint flags)
  689. {
  690. Trace.WriteLineIf(traceOci, "OCITransCommit", "OCI");
  691. return OciNativeCalls.OCITransCommit (svchp, errhp, flags);
  692. }
  693. internal static int OCITransRollback (IntPtr svchp,
  694. IntPtr errhp,
  695. uint flags)
  696. {
  697. Trace.WriteLineIf(traceOci, "OCITransRollback", "OCI");
  698. return OciNativeCalls.OCITransRollback (svchp, errhp, flags);
  699. }
  700. internal static int OCITransStart (IntPtr svchp,
  701. IntPtr errhp,
  702. uint timeout,
  703. OciTransactionFlags flags)
  704. {
  705. Trace.WriteLineIf(traceOci, "OCITransStart", "OCI");
  706. return OciNativeCalls.OCITransStart (svchp, errhp, timeout, flags);
  707. }
  708. internal static int OCICharSetToUnicode (
  709. IntPtr svchp,
  710. StringBuilder dst,
  711. byte [] src,
  712. out int rsize)
  713. {
  714. Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
  715. return OciNativeCalls.OCICharSetToUnicode (svchp, dst, dst!=null ? dst.Capacity : 0, src, src.Length, out rsize);
  716. }
  717. internal static int OCIUnicodeToCharSet (
  718. IntPtr svchp,
  719. byte [] dst,
  720. [MarshalAs (UnmanagedType.LPWStr)] string src,
  721. [MarshalAs (UnmanagedType.U4)] out int rsize)
  722. {
  723. Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
  724. return OciNativeCalls.OCIUnicodeToCharSet (svchp, dst, dst!=null ? dst.Length : 0, src, src.Length, out rsize);
  725. }
  726. #endregion
  727. }
  728. }