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 OCICacheFree (IntPtr envhp,
234 internal static extern int OCIAttrGet (IntPtr trgthndlp,
235 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
236 out IntPtr attributep,
238 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
241 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
242 internal static extern int OCIAttrGetSByte (IntPtr trgthndlp,
243 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
244 out sbyte attributep,
246 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
249 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
250 internal static extern int OCIAttrGetByte (IntPtr trgthndlp,
251 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
254 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
257 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
258 internal static extern int OCIAttrGetUInt16 (IntPtr trgthndlp,
259 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
260 out ushort attributep,
262 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
265 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
266 internal static extern int OCIAttrGetInt32 (IntPtr trgthndlp,
267 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
270 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
273 [DllImport ("oci", EntryPoint = "OCIAttrGet")]
274 internal static extern int OCIAttrGetIntPtr (IntPtr trgthndlp,
275 [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
276 out IntPtr attributep,
278 [MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
282 internal static extern int OCIDescriptorAlloc (IntPtr parenth,
284 [MarshalAs (UnmanagedType.U4)] OciHandleType type,
289 internal static extern int OCIHandleAlloc (IntPtr parenth,
291 [MarshalAs (UnmanagedType.U4)] OciHandleType type,
296 internal static extern int OCIHandleFree (IntPtr hndlp,
297 [MarshalAs (UnmanagedType.U4)] OciHandleType type);
300 internal static extern int OCILobClose (IntPtr svchp,
305 internal static extern int OCILobCopy (IntPtr svchp,
314 internal static extern int OCILobErase (IntPtr svchp,
321 internal static extern int OCILobGetChunkSize (IntPtr svchp,
324 out uint chunk_size);
327 internal static extern int OCILobGetLength (IntPtr svchp,
333 internal static extern int OCILobOpen (IntPtr svchp,
339 internal static extern int OCILobRead (IntPtr svchp,
352 internal static extern int OCILobTrim (IntPtr svchp,
358 internal static extern int OCILobWrite (IntPtr svchp,
372 internal static extern int OCILobCharSetForm (IntPtr svchp,
378 internal static extern int OCINlsGetInfo (IntPtr hndl,
380 [In][Out] byte[] bufp,
385 internal static extern int OCIServerAttach (IntPtr srvhp,
388 [MarshalAs (UnmanagedType.U4)] int dblink_len,
392 internal static extern int OCIServerDetach (IntPtr srvhp,
397 internal static extern int OCIServerVersion (IntPtr hndlp,
399 [In][Out] byte[] bufp,
401 [MarshalAs (UnmanagedType.U4)] OciHandleType type);
404 internal static extern int OCISessionBegin (IntPtr svchp,
407 [MarshalAs (UnmanagedType.U4)] OciCredentialType credt,
408 [MarshalAs (UnmanagedType.U4)] OciSessionMode mode);
411 internal static extern int OCISessionEnd (IntPtr svchp,
417 internal static extern int OCIParamGet (IntPtr hndlp,
418 [MarshalAs (UnmanagedType.U4)] OciHandleType htype,
421 [MarshalAs (UnmanagedType.U4)] int pos);
424 internal static extern int OCIStmtExecute (IntPtr svchp,
427 [MarshalAs (UnmanagedType.U4)] uint iters,
431 [MarshalAs (UnmanagedType.U4)] OciExecuteMode mode);
434 internal static extern int OCIStmtFetch (IntPtr stmtp,
442 internal static extern int OCIStmtPrepare (IntPtr stmthp,
445 [MarshalAs (UnmanagedType.U4)] int stmt_length,
446 [MarshalAs (UnmanagedType.U4)] OciStatementLanguage language,
447 [MarshalAs (UnmanagedType.U4)] OciStatementMode mode);
450 internal static extern int OCITransCommit (IntPtr svchp,
455 internal static extern int OCITransRollback (IntPtr svchp,
460 internal static extern int OCITransStart (IntPtr svchp,
463 [MarshalAs (UnmanagedType.U4)] OciTransactionFlags flags);
466 internal static extern int OCICharSetToUnicode (
468 [MarshalAs (UnmanagedType.LPWStr)] StringBuilder dst,
469 [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
471 [MarshalAs (UnmanagedType.SysUInt)] int srclen,
475 internal static extern int OCIUnicodeToCharSet (
478 [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
479 [MarshalAs (UnmanagedType.LPWStr)] string src,
480 [MarshalAs (UnmanagedType.SysUInt)] int srclen,
486 #region OCI call wrappers
488 internal static int OCIAttrSet (IntPtr trgthndlp,
489 OciHandleType trghndltyp,
492 OciAttributeType attrtype,
496 Trace.WriteLineIf(traceOci, string.Format("OCIAttrSet ({0}, {1})", trghndltyp, attrtype), "OCI");
498 return OciNativeCalls.OCIAttrSet (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
501 internal static int OCIAttrSetString (IntPtr trgthndlp,
502 OciHandleType trghndltyp,
505 OciAttributeType attrtype,
509 Trace.WriteLineIf(traceOci, string.Format("OCIAttrSetString ({0}, {1})", trghndltyp, attrtype), "OCI");
511 return OciNativeCalls.OCIAttrSetString (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
513 #if ORACLE_DATA_ACCESS
514 internal static int OCIPasswordChange (IntPtr svchp, IntPtr errhp,
523 Trace.WriteLineIf(traceOci, string.Format("OCIPasswordChange"), "OCI");
525 return OciNativeCalls.OCIPasswordChange (svchp, errhp, user_name, (uint) usernm_len, opasswd, (uint) opasswd_len, npasswd, (uint) npasswd_len, mode);
528 internal static int OCIErrorGet (IntPtr hndlp,
537 Trace.WriteLineIf(traceOci, "OCIErrorGet", "OCI");
539 return OciNativeCalls.OCIErrorGet (hndlp, recordno, sqlstate, out errcodep, bufp, bufsize, type);
542 internal static int OCIBindByName (IntPtr stmtp,
558 Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
560 return OciNativeCalls.OCIBindByName (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
561 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
564 internal static int OCIBindByNameRef (IntPtr stmtp,
580 Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
582 return OciNativeCalls.OCIBindByNameRef (stmtp, out bindpp, errhp, placeholder, placeh_len, ref valuep,
583 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
586 internal static int OCIBindByNameBytes (IntPtr stmtp,
593 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
602 Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
604 return OciNativeCalls.OCIBindByNameBytes (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
605 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
608 internal static int OCIBindByPos (IntPtr stmtp,
614 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
623 Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
625 return OciNativeCalls.OCIBindByPos (stmtp, out bindpp, errhp, position, valuep,
626 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
629 internal static int OCIBindByPosRef (IntPtr stmtp,
635 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
644 Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
646 return OciNativeCalls.OCIBindByPosRef (stmtp, out bindpp, errhp, position, ref valuep,
647 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
650 internal static int OCIBindByPosBytes (IntPtr stmtp,
656 [MarshalAs (UnmanagedType.U2)] OciDataType dty,
665 Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
667 return OciNativeCalls.OCIBindByPosBytes (stmtp, out bindpp, errhp, position, valuep,
668 value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
672 internal static extern void OCIDateTimeConstruct (IntPtr hndl,
683 uint timezone_length);
686 internal static extern void OCIDateTimeGetDate (IntPtr hndl,
694 internal static extern void OCIDateTimeGetTime (IntPtr hndl,
703 internal static extern int OCIIntervalGetDaySecond (IntPtr hndl,
713 internal static extern int OCIIntervalGetYearMonth (IntPtr hndl,
719 internal static int OCIDefineByPos (IntPtr stmtp,
732 Trace.WriteLineIf(traceOci, "OCIDefineByPos", "OCI");
734 return OciNativeCalls.OCIDefineByPos (stmtp, out defnpp, errhp, position, valuep,
735 value_sz, dty, ref indp, ref rlenp, rcodep, mode);
738 internal static int OCIDefineByPosPtr (IntPtr stmtp,
751 Trace.WriteLineIf(traceOci, "OCIDefineByPosPtr", "OCI");
753 return OciNativeCalls.OCIDefineByPosPtr (stmtp, out defnpp, errhp, position, ref valuep,
754 value_sz, dty, ref indp, ref rlenp, rcodep, mode);
757 internal static int OCIDescriptorFree (IntPtr hndlp,
761 Trace.WriteLineIf(traceOci, string.Format("OCIDescriptorFree ({0})", type), "OCI");
763 return OciNativeCalls.OCIDescriptorFree (hndlp, type);
766 internal static int OCIEnvCreate (out IntPtr envhpp,
767 OciEnvironmentMode mode,
776 Trace.WriteLineIf(traceOci, "OCIEnvCreate", "OCI");
778 return OciNativeCalls.OCIEnvCreate (out envhpp, mode, ctxp, malocfp, ralocfp, mfreep,
779 xtramem_sz, usrmempp);
782 internal static int OCICacheFree (IntPtr envhp,
787 Trace.WriteLineIf(traceOci, "OCICacheFree", "OCI");
789 return OciNativeCalls.OCICacheFree (envhp, svchp, stmthp);
792 internal static int OCIAttrGet (IntPtr trgthndlp,
793 OciHandleType trghndltyp,
794 out IntPtr attributep,
796 OciAttributeType attrtype,
800 Trace.WriteLineIf(traceOci, "OCIAttrGet", "OCI");
802 return OciNativeCalls.OCIAttrGet (trgthndlp, trghndltyp, out attributep, out sizep, attrtype, errhp);
805 internal static int OCIAttrGetSByte (IntPtr trgthndlp,
806 OciHandleType trghndltyp,
807 out sbyte attributep,
809 OciAttributeType attrtype,
813 Trace.WriteLineIf(traceOci, "OCIAttrGetSByte", "OCI");
815 return OciNativeCalls.OCIAttrGetSByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
818 internal static int OCIAttrGetByte (IntPtr trgthndlp,
819 OciHandleType trghndltyp,
822 OciAttributeType attrtype,
826 Trace.WriteLineIf(traceOci, "OCIAttrGetByte", "OCI");
828 return OciNativeCalls.OCIAttrGetByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
831 internal static int OCIAttrGetUInt16 (IntPtr trgthndlp,
832 OciHandleType trghndltyp,
833 out ushort attributep,
835 OciAttributeType attrtype,
839 Trace.WriteLineIf(traceOci, "OCIAttrGetUInt16", "OCI");
841 return OciNativeCalls.OCIAttrGetUInt16 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
844 internal static int OCIAttrGetInt32 (IntPtr trgthndlp,
845 OciHandleType trghndltyp,
848 OciAttributeType attrtype,
852 Trace.WriteLineIf(traceOci, "OCIAttrGetInt32", "OCI");
854 return OciNativeCalls.OCIAttrGetInt32 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
857 internal static int OCIAttrGetIntPtr (IntPtr trgthndlp,
858 OciHandleType trghndltyp,
859 out IntPtr attributep,
861 OciAttributeType attrtype,
865 Trace.WriteLineIf(traceOci, "OCIAttrGetIntPtr", "OCI");
867 return OciNativeCalls.OCIAttrGetIntPtr (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
870 internal static int OCIDescriptorAlloc (IntPtr parenth,
877 Trace.WriteLineIf(traceOci, "OCIDescriptorAlloc", "OCI");
879 return OciNativeCalls.OCIDescriptorAlloc (parenth, out hndlpp, type, xtramem_sz, usrmempp);
882 internal static int OCIHandleAlloc (IntPtr parenth,
889 Trace.WriteLineIf(traceOci, string.Format("OCIHandleAlloc ({0})", type), "OCI");
891 return OciNativeCalls.OCIHandleAlloc (parenth, out descpp, type, xtramem_sz, usrmempp);
894 internal static int OCIHandleFree (IntPtr hndlp,
898 Trace.WriteLineIf(traceOci, string.Format("OCIHandleFree ({0})", type), "OCI");
900 return OciNativeCalls.OCIHandleFree (hndlp, type);
903 internal static int OCILobClose (IntPtr svchp,
908 Trace.WriteLineIf(traceOci, "OCILobClose", "OCI");
910 return OciNativeCalls.OCILobClose (svchp, errhp, locp);
913 internal static int OCILobCopy (IntPtr svchp,
922 Trace.WriteLineIf(traceOci, "OCILobCopy", "OCI");
924 return OciNativeCalls.OCILobCopy (svchp, errhp, dst_locp, src_locp, amount, dst_offset, src_offset);
927 internal static int OCILobErase (IntPtr svchp,
934 Trace.WriteLineIf(traceOci, "OCILobErase", "OCI");
936 return OciNativeCalls.OCILobErase (svchp, errhp, locp, ref amount, offset);
939 internal static int OCILobGetChunkSize (IntPtr svchp,
945 Trace.WriteLineIf(traceOci, "OCILobGetChunkSize", "OCI");
947 return OciNativeCalls.OCILobGetChunkSize (svchp, errhp, locp, out chunk_size);
950 internal static int OCILobGetLength (IntPtr svchp,
956 Trace.WriteLineIf(traceOci, "OCILobGetLength", "OCI");
958 return OciNativeCalls.OCILobGetLength (svchp, errhp, locp, out lenp);
961 internal static int OCILobOpen (IntPtr svchp,
967 Trace.WriteLineIf(traceOci, "OCILobOpen", "OCI");
969 return OciNativeCalls.OCILobOpen (svchp, errhp, locp, mode);
972 internal static int OCILobRead (IntPtr svchp,
985 Trace.WriteLineIf(traceOci, "OCILobRead", "OCI");
987 return OciNativeCalls.OCILobRead (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
988 ctxp, cbfp, csid, csfrm);
991 internal static int OCILobTrim (IntPtr svchp,
997 Trace.WriteLineIf(traceOci, "OCILobTrim", "OCI");
999 return OciNativeCalls.OCILobTrim (svchp, errhp, locp, newlen);
1002 internal static int OCILobWrite (IntPtr svchp,
1016 Trace.WriteLineIf(traceOci, "OCILobWrite", "OCI");
1018 return OciNativeCalls.OCILobWrite (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
1019 piece, ctxp, cbfp, csid, csfrm);
1022 internal static int OCILobCharSetForm (IntPtr svchp,
1028 Trace.WriteLineIf(traceOci, "OCILobCharSetForm", "OCI");
1030 return OciNativeCalls.OCILobCharSetForm (svchp, errhp, locp, out csfrm);
1033 internal static int OCINlsGetInfo (IntPtr hndl,
1040 Trace.WriteLineIf(traceOci, "OCINlsGetInfo", "OCI");
1042 return OciNativeCalls.OCINlsGetInfo (hndl, errhp, bufp, buflen, item);
1045 internal static int OCIServerAttach (IntPtr srvhp,
1052 Trace.WriteLineIf(traceOci, "OCIServerAttach", "OCI");
1054 return OciNativeCalls.OCIServerAttach (srvhp, errhp, dblink, dblink_len, mode);
1057 internal static int OCIServerDetach (IntPtr srvhp,
1062 Trace.WriteLineIf(traceOci, "OCIServerDetach", "OCI");
1064 return OciNativeCalls.OCIServerDetach (srvhp, errhp, mode);
1067 internal static int OCIServerVersion (IntPtr hndlp,
1071 OciHandleType hndltype)
1074 Trace.WriteLineIf(traceOci, "OCIServerVersion", "OCI");
1076 return OciNativeCalls.OCIServerVersion (hndlp,
1083 internal static int OCISessionBegin (IntPtr svchp,
1086 OciCredentialType credt,
1087 OciSessionMode mode)
1090 Trace.WriteLineIf(traceOci, "OCISessionBegin", "OCI");
1092 return OciNativeCalls.OCISessionBegin (svchp, errhp, usrhp, credt, mode);
1095 internal static int OCISessionEnd (IntPtr svchp,
1101 Trace.WriteLineIf(traceOci, "OCISessionEnd", "OCI");
1103 return OciNativeCalls.OCISessionEnd (svchp, errhp, usrhp, mode);
1106 internal static int OCIParamGet (IntPtr hndlp,
1107 OciHandleType htype,
1113 Trace.WriteLineIf(traceOci, "OCIParamGet", "OCI");
1115 return OciNativeCalls.OCIParamGet (hndlp, htype, errhp, out parmdpp, pos);
1118 internal static int OCIStmtExecute (IntPtr svchp,
1125 OciExecuteMode mode)
1128 Trace.WriteLineIf(traceOci, "OCIStmtExecute", "OCI");
1135 return OciNativeCalls.OCIStmtExecute (svchp, stmthp, errhp, it, rowoff,
1136 snap_in, snap_out, mode);
1139 internal static int OCIStmtFetch (IntPtr stmtp,
1146 Trace.WriteLineIf(traceOci, "OCIStmtFetch", "OCI");
1148 return OciNativeCalls.OCIStmtFetch (stmtp, errhp, nrows, orientation, mode);
1152 internal static int OCIStmtPrepare (IntPtr stmthp,
1156 OciStatementLanguage language,
1157 OciStatementMode mode)
1160 Trace.WriteLineIf(traceOci, string.Format("OCIStmtPrepare ({0})", System.Text.Encoding.UTF8.GetString(stmt)), "OCI");
1163 return OciNativeCalls.OCIStmtPrepare (stmthp, errhp, stmt, stmt_length, language, mode);
1166 internal static int OCITransCommit (IntPtr svchp,
1171 Trace.WriteLineIf(traceOci, "OCITransCommit", "OCI");
1173 return OciNativeCalls.OCITransCommit (svchp, errhp, flags);
1176 internal static int OCITransRollback (IntPtr svchp,
1181 Trace.WriteLineIf(traceOci, "OCITransRollback", "OCI");
1183 return OciNativeCalls.OCITransRollback (svchp, errhp, flags);
1186 internal static int OCITransStart (IntPtr svchp,
1189 OciTransactionFlags flags)
1192 Trace.WriteLineIf(traceOci, "OCITransStart", "OCI");
1194 return OciNativeCalls.OCITransStart (svchp, errhp, timeout, flags);
1197 internal static int OCICharSetToUnicode (
1207 Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
1209 rc = OciNativeCalls.OCICharSetToUnicode (svchp, dst,
1210 (dst != null ? dst.Capacity : 0),
1211 src, src.Length, out retSize);
1212 rsize = (int) retSize;
1216 internal static int OCIUnicodeToCharSet (
1226 Trace.WriteLineIf(traceOci, "OCIUnicodeToCharSet", "OCI");
1229 rc = OciNativeCalls.OCIUnicodeToCharSet (svchp, dst,
1230 (dst != null ? dst.Length : 0),
1231 src, src.Length, out retSize);
1232 rsize = (int) retSize;
1237 internal static extern int OCIDateTimeCheck (IntPtr hndl,
1238 IntPtr err, IntPtr date, out uint valid);
1242 #region AllocateClear
1244 private static bool IsUnix =
1245 (int) Environment.OSVersion.Platform == 4 || (int) Environment.OSVersion.Platform == 128 || (int) Environment.OSVersion.Platform == 6;
1248 private static extern IntPtr calloc (int nmemb, int size);
1250 private const int GMEM_ZEROINIT = 0x40;
1252 [DllImport("kernel32")]
1253 private static extern IntPtr GlobalAlloc (int flags, int bytes);
1255 //http://download-uk.oracle.com/docs/cd/B14117_01/appdev.101/b10779/oci05bnd.htm#423147
1256 internal static IntPtr AllocateClear (int cb)
1259 return calloc (1, cb);
1261 return GlobalAlloc (GMEM_ZEROINIT, cb);
1265 #endregion AllocateClear