OciCalls.cs 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800
  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.U2)] OciDataType dty,
  84. ref short indp,
  85. ref int 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.U2)] OciDataType dty,
  96. ref short indp,
  97. ref int 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 OCISessionBegin (IntPtr svchp,
  244. IntPtr errhp,
  245. IntPtr usrhp,
  246. [MarshalAs (UnmanagedType.U4)] OciCredentialType credt,
  247. [MarshalAs (UnmanagedType.U4)] OciSessionMode mode);
  248. [DllImport ("oci")]
  249. internal static extern int OCISessionEnd (IntPtr svchp,
  250. IntPtr errhp,
  251. IntPtr usrhp,
  252. uint mode);
  253. [DllImport ("oci")]
  254. internal static extern int OCIParamGet (IntPtr hndlp,
  255. [MarshalAs (UnmanagedType.U4)] OciHandleType htype,
  256. IntPtr errhp,
  257. out IntPtr parmdpp,
  258. [MarshalAs (UnmanagedType.U4)] int pos);
  259. [DllImport ("oci")]
  260. internal static extern int OCIStmtExecute (IntPtr svchp,
  261. IntPtr stmthp,
  262. IntPtr errhp,
  263. [MarshalAs (UnmanagedType.U4)] bool iters,
  264. uint rowoff,
  265. IntPtr snap_in,
  266. IntPtr snap_out,
  267. [MarshalAs (UnmanagedType.U4)] OciExecuteMode mode);
  268. [DllImport ("oci")]
  269. internal static extern int OCIStmtFetch (IntPtr stmtp,
  270. IntPtr errhp,
  271. uint nrows,
  272. ushort orientation,
  273. uint mode);
  274. [DllImport ("oci")]
  275. internal static extern int OCIStmtPrepare (IntPtr stmthp,
  276. IntPtr errhp,
  277. byte [] stmt,
  278. [MarshalAs (UnmanagedType.U4)] int stmt_length,
  279. [MarshalAs (UnmanagedType.U4)] OciStatementLanguage language,
  280. [MarshalAs (UnmanagedType.U4)] OciStatementMode mode);
  281. [DllImport ("oci")]
  282. internal static extern int OCITransCommit (IntPtr svchp,
  283. IntPtr errhp,
  284. uint flags);
  285. [DllImport ("oci")]
  286. internal static extern int OCITransRollback (IntPtr svchp,
  287. IntPtr errhp,
  288. uint flags);
  289. [DllImport ("oci")]
  290. internal static extern int OCITransStart (IntPtr svchp,
  291. IntPtr errhp,
  292. uint timeout,
  293. [MarshalAs (UnmanagedType.U4)] OciTransactionFlags flags);
  294. [DllImport ("oci")]
  295. internal static extern int OCICharSetToUnicode (
  296. IntPtr svchp,
  297. [MarshalAs (UnmanagedType.LPWStr)] StringBuilder dst,
  298. [MarshalAs (UnmanagedType.U4)] int dstlen,
  299. byte [] src,
  300. [MarshalAs (UnmanagedType.U4)] int srclen,
  301. [MarshalAs (UnmanagedType.U4)] out int rsize);
  302. [DllImport ("oci")]
  303. internal static extern int OCIUnicodeToCharSet (
  304. IntPtr svchp,
  305. byte [] dst,
  306. [MarshalAs (UnmanagedType.U4)] int dstlen,
  307. [MarshalAs (UnmanagedType.LPWStr)] string src,
  308. [MarshalAs (UnmanagedType.U4)] int srclen,
  309. [MarshalAs (UnmanagedType.U4)] out int rsize);
  310. }
  311. #endregion
  312. #region OCI call wrappers
  313. internal static int OCIAttrSet (IntPtr trgthndlp,
  314. OciHandleType trghndltyp,
  315. IntPtr attributep,
  316. uint size,
  317. OciAttributeType attrtype,
  318. IntPtr errhp)
  319. {
  320. Trace.WriteLineIf(traceOci, string.Format("OCIAttrSet ({0}, {1})", trghndltyp, attrtype), "OCI");
  321. return OciNativeCalls.OCIAttrSet (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
  322. }
  323. internal static int OCIAttrSetString (IntPtr trgthndlp,
  324. OciHandleType trghndltyp,
  325. string attributep,
  326. uint size,
  327. OciAttributeType attrtype,
  328. IntPtr errhp)
  329. {
  330. Trace.WriteLineIf(traceOci, string.Format("OCIAttrSetString ({0}, {1})", trghndltyp, attrtype), "OCI");
  331. return OciNativeCalls.OCIAttrSetString (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
  332. }
  333. internal static int OCIErrorGet (IntPtr hndlp,
  334. uint recordno,
  335. IntPtr sqlstate,
  336. out int errcodep,
  337. IntPtr bufp,
  338. uint bufsize,
  339. OciHandleType type)
  340. {
  341. Trace.WriteLineIf(traceOci, "OCIErrorGet", "OCI");
  342. return OciNativeCalls.OCIErrorGet (hndlp, recordno, sqlstate, out errcodep, bufp, bufsize, type);
  343. }
  344. internal static int OCIBindByName (IntPtr stmtp,
  345. out IntPtr bindpp,
  346. IntPtr errhp,
  347. string placeholder,
  348. int placeh_len,
  349. IntPtr valuep,
  350. int value_sz,
  351. OciDataType dty,
  352. int indp,
  353. IntPtr alenp,
  354. IntPtr rcodep,
  355. uint maxarr_len,
  356. IntPtr curelp,
  357. uint mode)
  358. {
  359. Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
  360. return OciNativeCalls.OCIBindByName (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
  361. value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
  362. }
  363. internal static int OCIDefineByPos (IntPtr stmtp,
  364. out IntPtr defnpp,
  365. IntPtr errhp,
  366. int position,
  367. IntPtr valuep,
  368. int value_sz,
  369. OciDataType dty,
  370. ref short indp,
  371. ref int rlenp,
  372. IntPtr rcodep,
  373. uint mode)
  374. {
  375. Trace.WriteLineIf(traceOci, "OCIDefineByPos", "OCI");
  376. return OciNativeCalls.OCIDefineByPos (stmtp, out defnpp, errhp, position, valuep,
  377. value_sz, dty, ref indp, ref rlenp, rcodep, mode);
  378. }
  379. internal static int OCIDefineByPosPtr (IntPtr stmtp,
  380. out IntPtr defnpp,
  381. IntPtr errhp,
  382. int position,
  383. ref IntPtr valuep,
  384. int value_sz,
  385. OciDataType dty,
  386. ref short indp,
  387. ref int rlenp,
  388. IntPtr rcodep,
  389. uint mode)
  390. {
  391. Trace.WriteLineIf(traceOci, "OCIDefineByPosPtr", "OCI");
  392. return OciNativeCalls.OCIDefineByPosPtr (stmtp, out defnpp, errhp, position, ref valuep,
  393. value_sz, dty, ref indp, ref rlenp, rcodep, mode);
  394. }
  395. internal static int OCIDescriptorFree (IntPtr hndlp,
  396. OciHandleType type)
  397. {
  398. Trace.WriteLineIf(traceOci, string.Format("OCIDescriptorFree ({0})", type), "OCI");
  399. return OciNativeCalls.OCIDescriptorFree (hndlp, type);
  400. }
  401. internal static int OCIEnvCreate (out IntPtr envhpp,
  402. OciEnvironmentMode mode,
  403. IntPtr ctxp,
  404. IntPtr malocfp,
  405. IntPtr ralocfp,
  406. IntPtr mfreep,
  407. int xtramem_sz,
  408. IntPtr usrmempp)
  409. {
  410. Trace.WriteLineIf(traceOci, "OCIEnvCreate", "OCI");
  411. return OciNativeCalls.OCIEnvCreate (out envhpp, mode, ctxp, malocfp, ralocfp, mfreep,
  412. xtramem_sz, usrmempp);
  413. }
  414. internal static int OCIAttrGet (IntPtr trgthndlp,
  415. OciHandleType trghndltyp,
  416. out IntPtr attributep,
  417. out int sizep,
  418. OciAttributeType attrtype,
  419. IntPtr errhp)
  420. {
  421. Trace.WriteLineIf(traceOci, "OCIAttrGet", "OCI");
  422. return OciNativeCalls.OCIAttrGet (trgthndlp, trghndltyp, out attributep, out sizep, attrtype, errhp);
  423. }
  424. internal static int OCIAttrGetSByte (IntPtr trgthndlp,
  425. OciHandleType trghndltyp,
  426. out sbyte attributep,
  427. IntPtr sizep,
  428. OciAttributeType attrtype,
  429. IntPtr errhp)
  430. {
  431. Trace.WriteLineIf(traceOci, "OCIAttrGetSByte", "OCI");
  432. return OciNativeCalls.OCIAttrGetSByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  433. }
  434. internal static int OCIAttrGetByte (IntPtr trgthndlp,
  435. OciHandleType trghndltyp,
  436. out byte attributep,
  437. IntPtr sizep,
  438. OciAttributeType attrtype,
  439. IntPtr errhp)
  440. {
  441. Trace.WriteLineIf(traceOci, "OCIAttrGetByte", "OCI");
  442. return OciNativeCalls.OCIAttrGetByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  443. }
  444. internal static int OCIAttrGetUInt16 (IntPtr trgthndlp,
  445. OciHandleType trghndltyp,
  446. out ushort attributep,
  447. IntPtr sizep,
  448. OciAttributeType attrtype,
  449. IntPtr errhp)
  450. {
  451. Trace.WriteLineIf(traceOci, "OCIAttrGetUInt16", "OCI");
  452. return OciNativeCalls.OCIAttrGetUInt16 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  453. }
  454. internal static int OCIAttrGetInt32 (IntPtr trgthndlp,
  455. OciHandleType trghndltyp,
  456. out int attributep,
  457. IntPtr sizep,
  458. OciAttributeType attrtype,
  459. IntPtr errhp)
  460. {
  461. Trace.WriteLineIf(traceOci, "OCIAttrGetInt32", "OCI");
  462. return OciNativeCalls.OCIAttrGetInt32 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  463. }
  464. internal static int OCIAttrGetIntPtr (IntPtr trgthndlp,
  465. OciHandleType trghndltyp,
  466. out IntPtr attributep,
  467. IntPtr sizep,
  468. OciAttributeType attrtype,
  469. IntPtr errhp)
  470. {
  471. Trace.WriteLineIf(traceOci, "OCIAttrGetIntPtr", "OCI");
  472. return OciNativeCalls.OCIAttrGetIntPtr (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
  473. }
  474. internal static int OCIDescriptorAlloc (IntPtr parenth,
  475. out IntPtr hndlpp,
  476. OciHandleType type,
  477. int xtramem_sz,
  478. IntPtr usrmempp)
  479. {
  480. Trace.WriteLineIf(traceOci, "OCIDescriptorAlloc", "OCI");
  481. return OciNativeCalls.OCIDescriptorAlloc (parenth, out hndlpp, type, xtramem_sz, usrmempp);
  482. }
  483. internal static int OCIHandleAlloc (IntPtr parenth,
  484. out IntPtr descpp,
  485. OciHandleType type,
  486. int xtramem_sz,
  487. IntPtr usrmempp)
  488. {
  489. Trace.WriteLineIf(traceOci, string.Format("OCIHandleAlloc ({0})", type), "OCI");
  490. return OciNativeCalls.OCIHandleAlloc (parenth, out descpp, type, xtramem_sz, usrmempp);
  491. }
  492. internal static int OCIHandleFree (IntPtr hndlp,
  493. OciHandleType type)
  494. {
  495. Trace.WriteLineIf(traceOci, string.Format("OCIHandleFree ({0})", type), "OCI");
  496. return OciNativeCalls.OCIHandleFree (hndlp, type);
  497. }
  498. internal static int OCILobClose (IntPtr svchp,
  499. IntPtr errhp,
  500. IntPtr locp)
  501. {
  502. Trace.WriteLineIf(traceOci, "OCILobClose", "OCI");
  503. return OciNativeCalls.OCILobClose (svchp, errhp, locp);
  504. }
  505. internal static int OCILobCopy (IntPtr svchp,
  506. IntPtr errhp,
  507. IntPtr dst_locp,
  508. IntPtr src_locp,
  509. uint amount,
  510. uint dst_offset,
  511. uint src_offset)
  512. {
  513. Trace.WriteLineIf(traceOci, "OCILobCopy", "OCI");
  514. return OciNativeCalls.OCILobCopy (svchp, errhp, dst_locp, src_locp, amount, dst_offset, src_offset);
  515. }
  516. internal static int OCILobErase (IntPtr svchp,
  517. IntPtr errhp,
  518. IntPtr locp,
  519. ref uint amount,
  520. uint offset)
  521. {
  522. Trace.WriteLineIf(traceOci, "OCILobErase", "OCI");
  523. return OciNativeCalls.OCILobErase (svchp, errhp, locp, ref amount, offset);
  524. }
  525. internal static int OCILobGetChunkSize (IntPtr svchp,
  526. IntPtr errhp,
  527. IntPtr locp,
  528. out uint chunk_size)
  529. {
  530. Trace.WriteLineIf(traceOci, "OCILobGetChunkSize", "OCI");
  531. return OciNativeCalls.OCILobGetChunkSize (svchp, errhp, locp, out chunk_size);
  532. }
  533. internal static int OCILobGetLength (IntPtr svchp,
  534. IntPtr errhp,
  535. IntPtr locp,
  536. out uint lenp)
  537. {
  538. Trace.WriteLineIf(traceOci, "OCILobGetLength", "OCI");
  539. return OciNativeCalls.OCILobGetLength (svchp, errhp, locp, out lenp);
  540. }
  541. internal static int OCILobOpen (IntPtr svchp,
  542. IntPtr errhp,
  543. IntPtr locp,
  544. byte mode)
  545. {
  546. Trace.WriteLineIf(traceOci, "OCILobOpen", "OCI");
  547. return OciNativeCalls.OCILobOpen (svchp, errhp, locp, mode);
  548. }
  549. internal static int OCILobRead (IntPtr svchp,
  550. IntPtr errhp,
  551. IntPtr locp,
  552. ref uint amtp,
  553. uint offset,
  554. byte[] bufp,
  555. uint bufl,
  556. IntPtr ctxp,
  557. IntPtr cbfp,
  558. ushort csid,
  559. byte csfrm)
  560. {
  561. Trace.WriteLineIf(traceOci, "OCILobRead", "OCI");
  562. return OciNativeCalls.OCILobRead (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
  563. ctxp, cbfp, csid, csfrm);
  564. }
  565. internal static int OCILobTrim (IntPtr svchp,
  566. IntPtr errhp,
  567. IntPtr locp,
  568. uint newlen)
  569. {
  570. Trace.WriteLineIf(traceOci, "OCILobTrim", "OCI");
  571. return OciNativeCalls.OCILobTrim (svchp, errhp, locp, newlen);
  572. }
  573. internal static int OCILobWrite (IntPtr svchp,
  574. IntPtr errhp,
  575. IntPtr locp,
  576. ref uint amtp,
  577. uint offset,
  578. byte[] bufp,
  579. uint bufl,
  580. byte piece,
  581. IntPtr ctxp,
  582. IntPtr cbfp,
  583. ushort csid,
  584. byte csfrm)
  585. {
  586. Trace.WriteLineIf(traceOci, "OCILobWrite", "OCI");
  587. return OciNativeCalls.OCILobWrite (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
  588. piece, ctxp, cbfp, csid, csfrm);
  589. }
  590. internal static int OCIServerAttach (IntPtr srvhp,
  591. IntPtr errhp,
  592. string dblink,
  593. int dblink_len,
  594. uint mode)
  595. {
  596. Trace.WriteLineIf(traceOci, "OCIServerAttach", "OCI");
  597. return OciNativeCalls.OCIServerAttach (srvhp, errhp, dblink, dblink_len, mode);
  598. }
  599. internal static int OCIServerDetach (IntPtr srvhp,
  600. IntPtr errhp,
  601. uint mode)
  602. {
  603. Trace.WriteLineIf(traceOci, "OCIServerDetach", "OCI");
  604. return OciNativeCalls.OCIServerDetach (srvhp, errhp, mode);
  605. }
  606. internal static int OCISessionBegin (IntPtr svchp,
  607. IntPtr errhp,
  608. IntPtr usrhp,
  609. OciCredentialType credt,
  610. OciSessionMode mode)
  611. {
  612. Trace.WriteLineIf(traceOci, "OCISessionBegin", "OCI");
  613. return OciNativeCalls.OCISessionBegin (svchp, errhp, usrhp, credt, mode);
  614. }
  615. internal static int OCISessionEnd (IntPtr svchp,
  616. IntPtr errhp,
  617. IntPtr usrhp,
  618. uint mode)
  619. {
  620. Trace.WriteLineIf(traceOci, "OCISessionEnd", "OCI");
  621. return OciNativeCalls.OCISessionEnd (svchp, errhp, usrhp, mode);
  622. }
  623. internal static int OCIParamGet (IntPtr hndlp,
  624. OciHandleType htype,
  625. IntPtr errhp,
  626. out IntPtr parmdpp,
  627. int pos)
  628. {
  629. Trace.WriteLineIf(traceOci, "OCIParamGet", "OCI");
  630. return OciNativeCalls.OCIParamGet (hndlp, htype, errhp, out parmdpp, pos);
  631. }
  632. internal static int OCIStmtExecute (IntPtr svchp,
  633. IntPtr stmthp,
  634. IntPtr errhp,
  635. bool iters,
  636. uint rowoff,
  637. IntPtr snap_in,
  638. IntPtr snap_out,
  639. OciExecuteMode mode)
  640. {
  641. Trace.WriteLineIf(traceOci, "OCIStmtExecute", "OCI");
  642. return OciNativeCalls.OCIStmtExecute (svchp, stmthp, errhp, iters, rowoff,
  643. snap_in, snap_out, mode);
  644. }
  645. internal static int OCIStmtFetch (IntPtr stmtp,
  646. IntPtr errhp,
  647. uint nrows,
  648. ushort orientation,
  649. uint mode)
  650. {
  651. Trace.WriteLineIf(traceOci, "OCIStmtFetch", "OCI");
  652. return OciNativeCalls.OCIStmtFetch (stmtp, errhp, nrows, orientation, mode);
  653. }
  654. internal static int OCIStmtPrepare (IntPtr stmthp,
  655. IntPtr errhp,
  656. byte [] stmt,
  657. int stmt_length,
  658. OciStatementLanguage language,
  659. OciStatementMode mode)
  660. {
  661. Trace.WriteLineIf(traceOci, string.Format("OCIStmtPrepare ({0})", System.Text.Encoding.UTF8.GetString(stmt)), "OCI");
  662. return OciNativeCalls.OCIStmtPrepare (stmthp, errhp, stmt, stmt_length, language, mode);
  663. }
  664. internal static int OCITransCommit (IntPtr svchp,
  665. IntPtr errhp,
  666. uint flags)
  667. {
  668. Trace.WriteLineIf(traceOci, "OCITransCommit", "OCI");
  669. return OciNativeCalls.OCITransCommit (svchp, errhp, flags);
  670. }
  671. internal static int OCITransRollback (IntPtr svchp,
  672. IntPtr errhp,
  673. uint flags)
  674. {
  675. Trace.WriteLineIf(traceOci, "OCITransRollback", "OCI");
  676. return OciNativeCalls.OCITransRollback (svchp, errhp, flags);
  677. }
  678. internal static int OCITransStart (IntPtr svchp,
  679. IntPtr errhp,
  680. uint timeout,
  681. OciTransactionFlags flags)
  682. {
  683. Trace.WriteLineIf(traceOci, "OCITransStart", "OCI");
  684. return OciNativeCalls.OCITransStart (svchp, errhp, timeout, flags);
  685. }
  686. internal static int OCICharSetToUnicode (
  687. IntPtr svchp,
  688. StringBuilder dst,
  689. byte [] src,
  690. out int rsize)
  691. {
  692. Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
  693. return OciNativeCalls.OCICharSetToUnicode (svchp, dst, dst!=null ? dst.Capacity : 0, src, src.Length, out rsize);
  694. }
  695. internal static int OCIUnicodeToCharSet (
  696. IntPtr svchp,
  697. byte [] dst,
  698. [MarshalAs (UnmanagedType.LPWStr)] string src,
  699. [MarshalAs (UnmanagedType.U4)] out int rsize)
  700. {
  701. Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
  702. return OciNativeCalls.OCIUnicodeToCharSet (svchp, dst, dst!=null ? dst.Length : 0, src, src.Length, out rsize);
  703. }
  704. #endregion
  705. }
  706. }