OciCalls.cs 24 KB

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