4 // Part of the Mono class libraries at
5 // mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci
7 // Assembly: System.Data.OracleClient.dll
8 // Namespace: System.Data.OracleClient.Oci
10 // Authors: Joerg Rosenkranz <joergr@voelcker.com>
11 // Daniel Morgan <monodanmorg@yahoo.com>
13 // Copyright (C) Joerg Rosenkranz, 2004
14 // Copyright (C) Daniel Morgan, 2005, 2009
16 // Licensed under the MIT/X11 License.
19 //#define ORACLE_DATA_ACCESS
22 using System.Diagnostics;
23 using System.Runtime.InteropServices;
26 namespace System.Data.OracleClient.Oci
28 internal sealed class OciCalls
31 private static bool traceOci;
35 string env = Environment.GetEnvironmentVariable("OCI_TRACE");
37 traceOci = (env != null && env.Length > 0);
44 #region OCI native calls
46 private sealed class OciNativeCalls
48 private OciNativeCalls ()
51 [DllImport ("oci", EntryPoint = "OCIAttrSet")]
52 internal static extern int OCIAttrSet (IntPtr trgthndlp,
53 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
56 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
59 [DllImport ("oci", EntryPoint = "OCIAttrSet")]
60 internal static extern int OCIAttrSetString (IntPtr trgthndlp,
61 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
64 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
67 #if ORACLE_DATA_ACCESS
68 [DllImport ("oci", EntryPoint = "OCIPasswordChange")]
69 internal static extern int OCIPasswordChange (IntPtr svchp,
72 [MarshalAs (UnmanagedType.U4)] int usernm_len,
74 [MarshalAs (UnmanagedType.U4)] int opasswd_len,
76 [MarshalAs (UnmanagedType.U4)] int npasswd_len,
77 [MarshalAs (UnmanagedType.U4)] uint mode);
81 internal static extern int OCIErrorGet (IntPtr hndlp,
87 [MarshalAs (UnmanagedType.U4)] OciHandleType type);
89 [DllImport ("oci", EntryPoint = "OCIBindByName")]
90 internal static extern int OCIBindByName (IntPtr stmtp,
97 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
105 [DllImport ("oci", EntryPoint = "OCIBindByName")]
106 internal static extern int OCIBindByNameRef (IntPtr stmtp,
113 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
121 [DllImport ("oci", EntryPoint = "OCIBindByName")]
122 internal static extern int OCIBindByNameBytes (IntPtr stmtp,
129 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
137 [DllImport ("oci", EntryPoint = "OCIBindByPos")]
138 internal static extern int OCIBindByPos (IntPtr stmtp,
144 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
152 [DllImport ("oci", EntryPoint = "OCIBindByPos")]
153 internal static extern int OCIBindByPosBytes (IntPtr stmtp,
159 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
167 [DllImport ("oci", EntryPoint = "OCIBindByPos")]
168 internal static extern int OCIBindByPosRef (IntPtr stmtp,
174 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
183 internal static extern int OCIDateTimeFromText (IntPtr hndl,
184 IntPtr errhp, [In][Out] byte[] date_str, uint dstr_length,
185 [In][Out] byte[] fmt, uint fmt_length,
186 [In][Out] byte[] lang_name, uint lang_length, IntPtr datetime);
189 internal static extern int OCIDefineByPos (IntPtr stmtp,
192 [MarshalAs (UnmanagedType.U4)] int position,
195 [MarshalAs (UnmanagedType.U4)] OciDataType dty,
201 [DllImport ("oci", EntryPoint="OCIDefineByPos")]
202 internal static extern int OCIDefineByPosPtr (IntPtr stmtp,
205 [MarshalAs (UnmanagedType.U4)] int position,
208 [MarshalAs (UnmanagedType.U4)] OciDataType dty,
215 internal static extern int OCIDescriptorFree (IntPtr hndlp,
216 [MarshalAs (UnmanagedType.U4)] OciHandleType type);
219 internal static extern int OCIEnvCreate (out IntPtr envhpp,
220 [MarshalAs (UnmanagedType.U4)] OciEnvironmentMode mode,
229 internal static extern int OCIAttrGet (IntPtr trgthndlp,
230 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
231 out IntPtr attributep,
233 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
236 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
237 internal static extern int OCIAttrGetSByte (IntPtr trgthndlp,
238 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
239 out sbyte attributep,
241 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
244 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
245 internal static extern int OCIAttrGetByte (IntPtr trgthndlp,
246 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
249 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
252 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
253 internal static extern int OCIAttrGetUInt16 (IntPtr trgthndlp,
254 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
255 out ushort attributep,
257 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
260 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
261 internal static extern int OCIAttrGetInt32 (IntPtr trgthndlp,
262 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
265 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
268 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
269 internal static extern int OCIAttrGetIntPtr (IntPtr trgthndlp,
270 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
271 out IntPtr attributep,
273 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
277 internal static extern int OCIDescriptorAlloc (IntPtr parenth,
279 [MarshalAs (UnmanagedType.U4)] OciHandleType type,
284 internal static extern int OCIHandleAlloc (IntPtr parenth,
286 [MarshalAs (UnmanagedType.U4)] OciHandleType type,
291 internal static extern int OCIHandleFree (IntPtr hndlp,
292 [MarshalAs (UnmanagedType.U4)] OciHandleType type);
295 internal static extern int OCILobClose (IntPtr svchp,
300 internal static extern int OCILobCopy (IntPtr svchp,
309 internal static extern int OCILobErase (IntPtr svchp,
316 internal static extern int OCILobGetChunkSize (IntPtr svchp,
319 out uint chunk_size);
322 internal static extern int OCILobGetLength (IntPtr svchp,
328 internal static extern int OCILobOpen (IntPtr svchp,
334 internal static extern int OCILobRead (IntPtr svchp,
347 internal static extern int OCILobTrim (IntPtr svchp,
353 internal static extern int OCILobWrite (IntPtr svchp,
367 internal static extern int OCILobCharSetForm (IntPtr svchp,
373 internal static extern int OCINlsGetInfo (IntPtr hndl,
375 [In][Out] byte[] bufp,
380 internal static extern int OCIServerAttach (IntPtr srvhp,
383 [MarshalAs (UnmanagedType.U4)] int dblink_len,
387 internal static extern int OCIServerDetach (IntPtr srvhp,
392 internal static extern int OCIServerVersion (IntPtr hndlp,
394 [In][Out] byte[] bufp,
396 [MarshalAs (UnmanagedType.U4)] OciHandleType type);
399 internal static extern int OCISessionBegin (IntPtr svchp,
402 [MarshalAs (UnmanagedType.U4)] OciCredentialType credt,
403 [MarshalAs (UnmanagedType.U4)] OciSessionMode mode);
406 internal static extern int OCISessionEnd (IntPtr svchp,
412 internal static extern int OCIParamGet (IntPtr hndlp,
413 [MarshalAs (UnmanagedType.U4)] OciHandleType htype,
416 [MarshalAs (UnmanagedType.U4)] int pos);
419 internal static extern int OCIStmtExecute (IntPtr svchp,
422 [MarshalAs (UnmanagedType.U4)] uint iters,
426 [MarshalAs (UnmanagedType.U4)] OciExecuteMode mode);
429 internal static extern int OCIStmtFetch (IntPtr stmtp,
437 internal static extern int OCIStmtPrepare (IntPtr stmthp,
440 [MarshalAs (UnmanagedType.U4)] int stmt_length,
441 [MarshalAs (UnmanagedType.U4)] OciStatementLanguage language,
442 [MarshalAs (UnmanagedType.U4)] OciStatementMode mode);
445 internal static extern int OCITransCommit (IntPtr svchp,
450 internal static extern int OCITransRollback (IntPtr svchp,
455 internal static extern int OCITransStart (IntPtr svchp,
458 [MarshalAs (UnmanagedType.U4)] OciTransactionFlags flags);
461 internal static extern int OCICharSetToUnicode (
463 [MarshalAs (UnmanagedType.LPWStr)] StringBuilder dst,
464 [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
466 [MarshalAs (UnmanagedType.SysUInt)] int srclen,
467 [MarshalAs (UnmanagedType.SysUInt)] out int rsize);
470 internal static extern int OCIUnicodeToCharSet (
473 [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
474 [MarshalAs (UnmanagedType.LPWStr)] string src,
475 [MarshalAs (UnmanagedType.SysUInt)] int srclen,
476 [MarshalAs (UnmanagedType.SysUInt)] out int rsize);
481 #region OCI call wrappers
483 internal static int OCIAttrSet (IntPtr trgthndlp,
484 OciHandleType trghndltyp,
487 OciAttributeType attrtype,
491 Trace.WriteLineIf(traceOci, string.Format("OCIAttrSet ({0}, {1})", trghndltyp, attrtype), "OCI");
493 return OciNativeCalls.OCIAttrSet (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
496 internal static int OCIAttrSetString (IntPtr trgthndlp,
497 OciHandleType trghndltyp,
500 OciAttributeType attrtype,
504 Trace.WriteLineIf(traceOci, string.Format("OCIAttrSetString ({0}, {1})", trghndltyp, attrtype), "OCI");
506 return OciNativeCalls.OCIAttrSetString (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
508 #if ORACLE_DATA_ACCESS
509 internal static int OCIPasswordChange (IntPtr svchp, IntPtr errhp,
518 Trace.WriteLineIf(traceOci, string.Format("OCIPasswordChange"), "OCI");
520 return OciNativeCalls.OCIPasswordChange (svchp, errhp, user_name, (uint) usernm_len, opasswd, (uint) opasswd_len, npasswd, (uint) npasswd_len, mode);
523 internal static int OCIErrorGet (IntPtr hndlp,
532 Trace.WriteLineIf(traceOci, "OCIErrorGet", "OCI");
534 return OciNativeCalls.OCIErrorGet (hndlp, recordno, sqlstate, out errcodep, bufp, bufsize, type);
537 internal static int OCIBindByName (IntPtr stmtp,
553 Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
555 return OciNativeCalls.OCIBindByName (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
556 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
559 internal static int OCIBindByNameRef (IntPtr stmtp,
575 Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
577 return OciNativeCalls.OCIBindByNameRef (stmtp, out bindpp, errhp, placeholder, placeh_len, ref valuep,
578 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
581 internal static int OCIBindByNameBytes (IntPtr stmtp,
588 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
597 Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
599 return OciNativeCalls.OCIBindByNameBytes (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
600 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
603 internal static int OCIBindByPos (IntPtr stmtp,
609 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
618 Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
620 return OciNativeCalls.OCIBindByPos (stmtp, out bindpp, errhp, position, valuep,
621 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
624 internal static int OCIBindByPosRef (IntPtr stmtp,
630 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
639 Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
641 return OciNativeCalls.OCIBindByPosRef (stmtp, out bindpp, errhp, position, ref valuep,
642 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
645 internal static int OCIBindByPosBytes (IntPtr stmtp,
651 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
660 Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
662 return OciNativeCalls.OCIBindByPosBytes (stmtp, out bindpp, errhp, position, valuep,
663 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
667 internal static extern void OCIDateTimeConstruct (IntPtr hndl,
678 uint timezone_length);
681 internal static extern void OCIDateTimeGetDate (IntPtr hndl,
689 internal static extern void OCIDateTimeGetTime (IntPtr hndl,
698 internal static extern int OCIIntervalGetDaySecond (IntPtr hndl,
708 internal static extern int OCIIntervalGetYearMonth (IntPtr hndl,
714 internal static int OCIDefineByPos (IntPtr stmtp,
727 Trace.WriteLineIf(traceOci, "OCIDefineByPos", "OCI");
729 return OciNativeCalls.OCIDefineByPos (stmtp, out defnpp, errhp, position, valuep,
730 value_sz, dty, ref indp, ref rlenp, rcodep, mode);
733 internal static int OCIDefineByPosPtr (IntPtr stmtp,
746 Trace.WriteLineIf(traceOci, "OCIDefineByPosPtr", "OCI");
748 return OciNativeCalls.OCIDefineByPosPtr (stmtp, out defnpp, errhp, position, ref valuep,
749 value_sz, dty, ref indp, ref rlenp, rcodep, mode);
752 internal static int OCIDescriptorFree (IntPtr hndlp,
756 Trace.WriteLineIf(traceOci, string.Format("OCIDescriptorFree ({0})", type), "OCI");
758 return OciNativeCalls.OCIDescriptorFree (hndlp, type);
761 internal static int OCIEnvCreate (out IntPtr envhpp,
762 OciEnvironmentMode mode,
771 Trace.WriteLineIf(traceOci, "OCIEnvCreate", "OCI");
773 return OciNativeCalls.OCIEnvCreate (out envhpp, mode, ctxp, malocfp, ralocfp, mfreep,
774 xtramem_sz, usrmempp);
777 internal static int OCIAttrGet (IntPtr trgthndlp,
778 OciHandleType trghndltyp,
779 out IntPtr attributep,
781 OciAttributeType attrtype,
785 Trace.WriteLineIf(traceOci, "OCIAttrGet", "OCI");
787 return OciNativeCalls.OCIAttrGet (trgthndlp, trghndltyp, out attributep, out sizep, attrtype, errhp);
790 internal static int OCIAttrGetSByte (IntPtr trgthndlp,
791 OciHandleType trghndltyp,
792 out sbyte attributep,
794 OciAttributeType attrtype,
798 Trace.WriteLineIf(traceOci, "OCIAttrGetSByte", "OCI");
800 return OciNativeCalls.OCIAttrGetSByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
803 internal static int OCIAttrGetByte (IntPtr trgthndlp,
804 OciHandleType trghndltyp,
807 OciAttributeType attrtype,
811 Trace.WriteLineIf(traceOci, "OCIAttrGetByte", "OCI");
813 return OciNativeCalls.OCIAttrGetByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
816 internal static int OCIAttrGetUInt16 (IntPtr trgthndlp,
817 OciHandleType trghndltyp,
818 out ushort attributep,
820 OciAttributeType attrtype,
824 Trace.WriteLineIf(traceOci, "OCIAttrGetUInt16", "OCI");
826 return OciNativeCalls.OCIAttrGetUInt16 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
829 internal static int OCIAttrGetInt32 (IntPtr trgthndlp,
830 OciHandleType trghndltyp,
833 OciAttributeType attrtype,
837 Trace.WriteLineIf(traceOci, "OCIAttrGetInt32", "OCI");
839 return OciNativeCalls.OCIAttrGetInt32 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
842 internal static int OCIAttrGetIntPtr (IntPtr trgthndlp,
843 OciHandleType trghndltyp,
844 out IntPtr attributep,
846 OciAttributeType attrtype,
850 Trace.WriteLineIf(traceOci, "OCIAttrGetIntPtr", "OCI");
852 return OciNativeCalls.OCIAttrGetIntPtr (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
855 internal static int OCIDescriptorAlloc (IntPtr parenth,
862 Trace.WriteLineIf(traceOci, "OCIDescriptorAlloc", "OCI");
864 return OciNativeCalls.OCIDescriptorAlloc (parenth, out hndlpp, type, xtramem_sz, usrmempp);
867 internal static int OCIHandleAlloc (IntPtr parenth,
874 Trace.WriteLineIf(traceOci, string.Format("OCIHandleAlloc ({0})", type), "OCI");
876 return OciNativeCalls.OCIHandleAlloc (parenth, out descpp, type, xtramem_sz, usrmempp);
879 internal static int OCIHandleFree (IntPtr hndlp,
883 Trace.WriteLineIf(traceOci, string.Format("OCIHandleFree ({0})", type), "OCI");
885 return OciNativeCalls.OCIHandleFree (hndlp, type);
888 internal static int OCILobClose (IntPtr svchp,
893 Trace.WriteLineIf(traceOci, "OCILobClose", "OCI");
895 return OciNativeCalls.OCILobClose (svchp, errhp, locp);
898 internal static int OCILobCopy (IntPtr svchp,
907 Trace.WriteLineIf(traceOci, "OCILobCopy", "OCI");
909 return OciNativeCalls.OCILobCopy (svchp, errhp, dst_locp, src_locp, amount, dst_offset, src_offset);
912 internal static int OCILobErase (IntPtr svchp,
919 Trace.WriteLineIf(traceOci, "OCILobErase", "OCI");
921 return OciNativeCalls.OCILobErase (svchp, errhp, locp, ref amount, offset);
924 internal static int OCILobGetChunkSize (IntPtr svchp,
930 Trace.WriteLineIf(traceOci, "OCILobGetChunkSize", "OCI");
932 return OciNativeCalls.OCILobGetChunkSize (svchp, errhp, locp, out chunk_size);
935 internal static int OCILobGetLength (IntPtr svchp,
941 Trace.WriteLineIf(traceOci, "OCILobGetLength", "OCI");
943 return OciNativeCalls.OCILobGetLength (svchp, errhp, locp, out lenp);
946 internal static int OCILobOpen (IntPtr svchp,
952 Trace.WriteLineIf(traceOci, "OCILobOpen", "OCI");
954 return OciNativeCalls.OCILobOpen (svchp, errhp, locp, mode);
957 internal static int OCILobRead (IntPtr svchp,
970 Trace.WriteLineIf(traceOci, "OCILobRead", "OCI");
972 return OciNativeCalls.OCILobRead (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
973 ctxp, cbfp, csid, csfrm);
976 internal static int OCILobTrim (IntPtr svchp,
982 Trace.WriteLineIf(traceOci, "OCILobTrim", "OCI");
984 return OciNativeCalls.OCILobTrim (svchp, errhp, locp, newlen);
987 internal static int OCILobWrite (IntPtr svchp,
1001 Trace.WriteLineIf(traceOci, "OCILobWrite", "OCI");
1003 return OciNativeCalls.OCILobWrite (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
1004 piece, ctxp, cbfp, csid, csfrm);
1007 internal static int OCILobCharSetForm (IntPtr svchp,
1013 Trace.WriteLineIf(traceOci, "OCILobCharSetForm", "OCI");
1015 return OciNativeCalls.OCILobCharSetForm (svchp, errhp, locp, out csfrm);
1018 internal static int OCINlsGetInfo (IntPtr hndl,
1025 Trace.WriteLineIf(traceOci, "OCINlsGetInfo", "OCI");
1027 return OciNativeCalls.OCINlsGetInfo (hndl, errhp, bufp, buflen, item);
1030 internal static int OCIServerAttach (IntPtr srvhp,
1037 Trace.WriteLineIf(traceOci, "OCIServerAttach", "OCI");
1039 return OciNativeCalls.OCIServerAttach (srvhp, errhp, dblink, dblink_len, mode);
1042 internal static int OCIServerDetach (IntPtr srvhp,
1047 Trace.WriteLineIf(traceOci, "OCIServerDetach", "OCI");
1049 return OciNativeCalls.OCIServerDetach (srvhp, errhp, mode);
1052 internal static int OCIServerVersion (IntPtr hndlp,
1056 OciHandleType hndltype)
1059 Trace.WriteLineIf(traceOci, "OCIServerVersion", "OCI");
1061 return OciNativeCalls.OCIServerVersion (hndlp,
1068 internal static int OCISessionBegin (IntPtr svchp,
1071 OciCredentialType credt,
1072 OciSessionMode mode)
1075 Trace.WriteLineIf(traceOci, "OCISessionBegin", "OCI");
1077 return OciNativeCalls.OCISessionBegin (svchp, errhp, usrhp, credt, mode);
1080 internal static int OCISessionEnd (IntPtr svchp,
1086 Trace.WriteLineIf(traceOci, "OCISessionEnd", "OCI");
1088 return OciNativeCalls.OCISessionEnd (svchp, errhp, usrhp, mode);
1091 internal static int OCIParamGet (IntPtr hndlp,
1092 OciHandleType htype,
1098 Trace.WriteLineIf(traceOci, "OCIParamGet", "OCI");
1100 return OciNativeCalls.OCIParamGet (hndlp, htype, errhp, out parmdpp, pos);
1103 internal static int OCIStmtExecute (IntPtr svchp,
1110 OciExecuteMode mode)
1113 Trace.WriteLineIf(traceOci, "OCIStmtExecute", "OCI");
1120 return OciNativeCalls.OCIStmtExecute (svchp, stmthp, errhp, it, rowoff,
1121 snap_in, snap_out, mode);
1124 internal static int OCIStmtFetch (IntPtr stmtp,
1131 Trace.WriteLineIf(traceOci, "OCIStmtFetch", "OCI");
1133 return OciNativeCalls.OCIStmtFetch (stmtp, errhp, nrows, orientation, mode);
1137 internal static int OCIStmtPrepare (IntPtr stmthp,
1141 OciStatementLanguage language,
1142 OciStatementMode mode)
1145 Trace.WriteLineIf(traceOci, string.Format("OCIStmtPrepare ({0})", System.Text.Encoding.UTF8.GetString(stmt)), "OCI");
1148 return OciNativeCalls.OCIStmtPrepare (stmthp, errhp, stmt, stmt_length, language, mode);
1151 internal static int OCITransCommit (IntPtr svchp,
1156 Trace.WriteLineIf(traceOci, "OCITransCommit", "OCI");
1158 return OciNativeCalls.OCITransCommit (svchp, errhp, flags);
1161 internal static int OCITransRollback (IntPtr svchp,
1166 Trace.WriteLineIf(traceOci, "OCITransRollback", "OCI");
1168 return OciNativeCalls.OCITransRollback (svchp, errhp, flags);
1171 internal static int OCITransStart (IntPtr svchp,
1174 OciTransactionFlags flags)
1177 Trace.WriteLineIf(traceOci, "OCITransStart", "OCI");
1179 return OciNativeCalls.OCITransStart (svchp, errhp, timeout, flags);
1182 internal static int OCICharSetToUnicode (
1189 Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
1192 return OciNativeCalls.OCICharSetToUnicode (svchp, dst, dst!=null ? dst.Capacity : 0, src, src.Length, out rsize);
1195 internal static int OCIUnicodeToCharSet (
1198 [MarshalAs (UnmanagedType.LPWStr)] string src,
1199 [MarshalAs (UnmanagedType.SysUInt)] out int rsize)
1202 Trace.WriteLineIf(traceOci, "OCIUnicodeToCharSet", "OCI");
1205 return OciNativeCalls.OCIUnicodeToCharSet (svchp, dst, dst!=null ? dst.Length : 0, src, src.Length, out rsize);
1209 internal static extern int OCIDateTimeCheck (IntPtr hndl,
1210 IntPtr err, IntPtr date, out uint valid);
1214 #region AllocateClear
1216 private static bool IsUnix =
1217 (int) Environment.OSVersion.Platform == 4 || (int) Environment.OSVersion.Platform == 128 || (int) Environment.OSVersion.Platform == 6;
1220 private static extern IntPtr calloc (int nmemb, int size);
1222 private const int GMEM_ZEROINIT = 0x40;
1224 [DllImport("kernel32")]
1225 private static extern IntPtr GlobalAlloc (int flags, int bytes);
1227 //http://download-uk.oracle.com/docs/cd/B14117_01/appdev.101/b10779/oci05bnd.htm#423147
1228 internal static IntPtr AllocateClear (int cb)
1231 return calloc (1, cb);
1233 return GlobalAlloc (GMEM_ZEROINIT, cb);
1237 #endregion AllocateClear