-//
-// OciCalls.cs
+//
+// OciCalls.cs
//
// Part of the Mono class libraries at
// mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci
// Namespace: System.Data.OracleClient.Oci
//
// Authors: Joerg Rosenkranz <joergr@voelcker.com>
-// Daniel Morgan <danielmorgan@verizon.net>
+// Daniel Morgan <monodanmorg@yahoo.com>
//
// Copyright (C) Joerg Rosenkranz, 2004
-// Copyright (C) Daniel Morgan, 2005
+// Copyright (C) Daniel Morgan, 2005, 2009
//
// Licensed under the MIT/X11 License.
//
+//#define ORACLE_DATA_ACCESS
+
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
{
internal sealed class OciCalls
{
-
- private static bool traceOci;
#if TRACE
+ private static bool traceOci;
static OciCalls()
{
[MarshalAs (UnmanagedType.U4)] OciAttributeType attrtype,
IntPtr errhp);
+#if ORACLE_DATA_ACCESS
+ [DllImport ("oci", EntryPoint = "OCIPasswordChange")]
+ internal static extern int OCIPasswordChange (IntPtr svchp,
+ IntPtr errhp,
+ byte [] user_name,
+ [MarshalAs (UnmanagedType.U4)] int usernm_len,
+ byte [] opasswd,
+ [MarshalAs (UnmanagedType.U4)] int opasswd_len,
+ byte [] npasswd,
+ [MarshalAs (UnmanagedType.U4)] int npasswd_len,
+ [MarshalAs (UnmanagedType.U4)] uint mode);
+#endif
+
[DllImport ("oci")]
internal static extern int OCIErrorGet (IntPtr hndlp,
uint recordno,
IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
ref IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
byte[] valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
byte[] valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
ref IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U4)] OciDataType dty,
- ref short indp,
- ref short rlenp,
+ IntPtr indp,
+ IntPtr rlenp,
IntPtr rcodep,
uint mode);
ref IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U4)] OciDataType dty,
- ref short indp,
- ref short rlenp,
+ IntPtr indp,
+ IntPtr rlenp,
IntPtr rcodep,
uint mode);
int xtramem_sz,
IntPtr usrmempp);
+ [DllImport ("oci")]
+ internal static extern int OCICacheFree (IntPtr envhp,
+ IntPtr errhp,
+ IntPtr stmthp);
+
[DllImport ("oci")]
internal static extern int OCIAttrGet (IntPtr trgthndlp,
[MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
byte csfrm);
[DllImport ("oci")]
- internal static extern int OCINlsGetInfo (IntPtr hndl,
+ internal static extern int OCILobCharSetForm (IntPtr svchp,
+ IntPtr errhp,
+ IntPtr locp,
+ out byte csfrm);
+
+ [DllImport ("oci")]
+ internal static extern int OCINlsGetInfo (IntPtr hndl,
IntPtr errhp,
[In][Out] byte[] bufp,
- uint buflen,
+ uint buflen,
ushort item);
[DllImport ("oci")]
uint nrows,
ushort orientation,
uint mode);
-
+
[DllImport ("oci")]
internal static extern int OCIStmtPrepare (IntPtr stmthp,
[DllImport ("oci")]
internal static extern int OCICharSetToUnicode (
IntPtr svchp,
- [MarshalAs (UnmanagedType.LPWStr)] StringBuilder dst,
- [MarshalAs (UnmanagedType.U4)] int dstlen,
+ [MarshalAs (UnmanagedType.LPWStr)] StringBuilder dst,
+ [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
byte [] src,
- [MarshalAs (UnmanagedType.U4)] int srclen,
- [MarshalAs (UnmanagedType.U4)] out int rsize);
-
+ [MarshalAs (UnmanagedType.SysUInt)] int srclen,
+ out long rsize);
+
[DllImport ("oci")]
internal static extern int OCIUnicodeToCharSet (
IntPtr svchp,
byte [] dst,
- [MarshalAs (UnmanagedType.U4)] int dstlen,
- [MarshalAs (UnmanagedType.LPWStr)] string src,
- [MarshalAs (UnmanagedType.U4)] int srclen,
- [MarshalAs (UnmanagedType.U4)] out int rsize);
+ [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
+ [MarshalAs (UnmanagedType.LPWStr)] string src,
+ [MarshalAs (UnmanagedType.SysUInt)] int srclen,
+ out long rsize);
}
#endregion
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, string.Format("OCIAttrSet ({0}, {1})", trghndltyp, attrtype), "OCI");
+ #endif
return OciNativeCalls.OCIAttrSet (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
}
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, string.Format("OCIAttrSetString ({0}, {1})", trghndltyp, attrtype), "OCI");
+ #endif
return OciNativeCalls.OCIAttrSetString (trgthndlp, trghndltyp, attributep, size, attrtype, errhp);
}
-
+#if ORACLE_DATA_ACCESS
+ internal static int OCIPasswordChange (IntPtr svchp, IntPtr errhp,
+ int usernm_len,
+ byte [] opasswd,
+ int opasswd_len,
+ byte [] npasswd,
+ int npasswd_len,
+ uint mode)
+ {
+ #if TRACE
+ Trace.WriteLineIf(traceOci, string.Format("OCIPasswordChange"), "OCI");
+ #endif
+ return OciNativeCalls.OCIPasswordChange (svchp, errhp, user_name, (uint) usernm_len, opasswd, (uint) opasswd_len, npasswd, (uint) npasswd_len, mode);
+ }
+#endif
internal static int OCIErrorGet (IntPtr hndlp,
uint recordno,
IntPtr sqlstate,
uint bufsize,
OciHandleType type)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIErrorGet", "OCI");
+ #endif
return OciNativeCalls.OCIErrorGet (hndlp, recordno, sqlstate, out errcodep, bufp, bufsize, type);
}
IntPtr valuep,
int value_sz,
OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr curelp,
uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
- return OciNativeCalls.OCIBindByName (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
- value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
+ #endif
+ return OciNativeCalls.OCIBindByName (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
+ value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
}
internal static int OCIBindByNameRef (IntPtr stmtp,
ref IntPtr valuep,
int value_sz,
OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr curelp,
- uint mode)
+ uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
- return OciNativeCalls.OCIBindByNameRef (stmtp, out bindpp, errhp, placeholder, placeh_len, ref valuep,
- value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
+ #endif
+ return OciNativeCalls.OCIBindByNameRef (stmtp, out bindpp, errhp, placeholder, placeh_len, ref valuep,
+ value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
}
internal static int OCIBindByNameBytes (IntPtr stmtp,
byte[] valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr curelp,
- uint mode)
+ uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIBindByName", "OCI");
- return OciNativeCalls.OCIBindByNameBytes (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
- value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
+ #endif
+ return OciNativeCalls.OCIBindByNameBytes (stmtp, out bindpp, errhp, placeholder, placeh_len, valuep,
+ value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
}
internal static int OCIBindByPos (IntPtr stmtp,
IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr curelp,
- uint mode)
+ uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
- return OciNativeCalls.OCIBindByPos (stmtp, out bindpp, errhp, position, valuep,
- value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
+ #endif
+ return OciNativeCalls.OCIBindByPos (stmtp, out bindpp, errhp, position, valuep,
+ value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
}
internal static int OCIBindByPosRef (IntPtr stmtp,
ref IntPtr valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr curelp,
- uint mode)
+ uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
- return OciNativeCalls.OCIBindByPosRef (stmtp, out bindpp, errhp, position, ref valuep,
- value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
+ #endif
+ return OciNativeCalls.OCIBindByPosRef (stmtp, out bindpp, errhp, position, ref valuep,
+ value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
}
internal static int OCIBindByPosBytes (IntPtr stmtp,
byte[] valuep,
int value_sz,
[MarshalAs (UnmanagedType.U2)] OciDataType dty,
- ref short indp,
+ IntPtr indp,
IntPtr alenp,
IntPtr rcodep,
uint maxarr_len,
IntPtr curelp,
- uint mode)
+ uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIBindByPos", "OCI");
- return OciNativeCalls.OCIBindByPosBytes (stmtp, out bindpp, errhp, position, valuep,
- value_sz, dty, ref indp, alenp, rcodep, maxarr_len, curelp, mode);
+ #endif
+ return OciNativeCalls.OCIBindByPosBytes (stmtp, out bindpp, errhp, position, valuep,
+ value_sz, dty, indp, alenp, rcodep, maxarr_len, curelp, mode);
}
[DllImport ("oci")]
out byte min,
out byte sec,
out uint fsec);
+
+ [DllImport ("oci")]
+ internal static extern int OCIIntervalGetDaySecond (IntPtr hndl,
+ IntPtr err,
+ out int days,
+ out int hours,
+ out int mins,
+ out int secs,
+ out int fsec,
+ IntPtr interval);
+
+ [DllImport ("oci")]
+ internal static extern int OCIIntervalGetYearMonth (IntPtr hndl,
+ IntPtr err,
+ out int years,
+ out int months,
+ IntPtr interval);
internal static int OCIDefineByPos (IntPtr stmtp,
out IntPtr defnpp,
IntPtr valuep,
int value_sz,
OciDataType dty,
- ref short indp,
- ref short rlenp,
+ IntPtr indp,
+ IntPtr rlenp,
IntPtr rcodep,
uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIDefineByPos", "OCI");
- return OciNativeCalls.OCIDefineByPos (stmtp, out defnpp, errhp, position, valuep,
- value_sz, dty, ref indp, ref rlenp, rcodep, mode);
+ #endif
+ return OciNativeCalls.OCIDefineByPos (stmtp, out defnpp, errhp, position, valuep,
+ value_sz, dty, indp, rlenp, rcodep, mode);
}
internal static int OCIDefineByPosPtr (IntPtr stmtp,
ref IntPtr valuep,
int value_sz,
OciDataType dty,
- ref short indp,
- ref short rlenp,
+ IntPtr indp,
+ IntPtr rlenp,
IntPtr rcodep,
uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIDefineByPosPtr", "OCI");
- return OciNativeCalls.OCIDefineByPosPtr (stmtp, out defnpp, errhp, position, ref valuep,
- value_sz, dty, ref indp, ref rlenp, rcodep, mode);
+ #endif
+ return OciNativeCalls.OCIDefineByPosPtr (stmtp, out defnpp, errhp, position, ref valuep,
+ value_sz, dty, indp, rlenp, rcodep, mode);
}
internal static int OCIDescriptorFree (IntPtr hndlp,
OciHandleType type)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, string.Format("OCIDescriptorFree ({0})", type), "OCI");
+ #endif
return OciNativeCalls.OCIDescriptorFree (hndlp, type);
}
int xtramem_sz,
IntPtr usrmempp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIEnvCreate", "OCI");
+ #endif
return OciNativeCalls.OCIEnvCreate (out envhpp, mode, ctxp, malocfp, ralocfp, mfreep,
xtramem_sz, usrmempp);
}
+ internal static int OCICacheFree (IntPtr envhp,
+ IntPtr svchp,
+ IntPtr stmthp)
+ {
+ #if TRACE
+ Trace.WriteLineIf(traceOci, "OCICacheFree", "OCI");
+ #endif
+ return OciNativeCalls.OCICacheFree (envhp, svchp, stmthp);
+ }
+
internal static int OCIAttrGet (IntPtr trgthndlp,
OciHandleType trghndltyp,
out IntPtr attributep,
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIAttrGet", "OCI");
+ #endif
return OciNativeCalls.OCIAttrGet (trgthndlp, trghndltyp, out attributep, out sizep, attrtype, errhp);
}
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIAttrGetSByte", "OCI");
+ #endif
return OciNativeCalls.OCIAttrGetSByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
}
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIAttrGetByte", "OCI");
+ #endif
return OciNativeCalls.OCIAttrGetByte (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
}
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIAttrGetUInt16", "OCI");
+ #endif
return OciNativeCalls.OCIAttrGetUInt16 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
}
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIAttrGetInt32", "OCI");
+ #endif
return OciNativeCalls.OCIAttrGetInt32 (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
}
OciAttributeType attrtype,
IntPtr errhp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIAttrGetIntPtr", "OCI");
+ #endif
return OciNativeCalls.OCIAttrGetIntPtr (trgthndlp, trghndltyp, out attributep, sizep, attrtype, errhp);
}
int xtramem_sz,
IntPtr usrmempp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIDescriptorAlloc", "OCI");
+ #endif
return OciNativeCalls.OCIDescriptorAlloc (parenth, out hndlpp, type, xtramem_sz, usrmempp);
}
int xtramem_sz,
IntPtr usrmempp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, string.Format("OCIHandleAlloc ({0})", type), "OCI");
+ #endif
return OciNativeCalls.OCIHandleAlloc (parenth, out descpp, type, xtramem_sz, usrmempp);
}
internal static int OCIHandleFree (IntPtr hndlp,
OciHandleType type)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, string.Format("OCIHandleFree ({0})", type), "OCI");
+ #endif
return OciNativeCalls.OCIHandleFree (hndlp, type);
}
IntPtr errhp,
IntPtr locp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobClose", "OCI");
+ #endif
return OciNativeCalls.OCILobClose (svchp, errhp, locp);
}
uint dst_offset,
uint src_offset)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobCopy", "OCI");
+ #endif
return OciNativeCalls.OCILobCopy (svchp, errhp, dst_locp, src_locp, amount, dst_offset, src_offset);
}
ref uint amount,
uint offset)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobErase", "OCI");
+ #endif
return OciNativeCalls.OCILobErase (svchp, errhp, locp, ref amount, offset);
}
IntPtr locp,
out uint chunk_size)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobGetChunkSize", "OCI");
+ #endif
return OciNativeCalls.OCILobGetChunkSize (svchp, errhp, locp, out chunk_size);
}
IntPtr locp,
out uint lenp)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobGetLength", "OCI");
+ #endif
return OciNativeCalls.OCILobGetLength (svchp, errhp, locp, out lenp);
}
IntPtr locp,
byte mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobOpen", "OCI");
+ #endif
return OciNativeCalls.OCILobOpen (svchp, errhp, locp, mode);
}
ushort csid,
byte csfrm)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobRead", "OCI");
- return OciNativeCalls.OCILobRead (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
+ #endif
+ return OciNativeCalls.OCILobRead (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
ctxp, cbfp, csid, csfrm);
}
IntPtr locp,
uint newlen)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobTrim", "OCI");
+ #endif
return OciNativeCalls.OCILobTrim (svchp, errhp, locp, newlen);
}
ushort csid,
byte csfrm)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCILobWrite", "OCI");
+ #endif
return OciNativeCalls.OCILobWrite (svchp, errhp, locp, ref amtp, offset, bufp, bufl,
piece, ctxp, cbfp, csid, csfrm);
}
- internal static int OCINlsGetInfo (IntPtr hndl,
+ internal static int OCILobCharSetForm (IntPtr svchp,
+ IntPtr errhp,
+ IntPtr locp,
+ out byte csfrm)
+ {
+ #if TRACE
+ Trace.WriteLineIf(traceOci, "OCILobCharSetForm", "OCI");
+ #endif
+ return OciNativeCalls.OCILobCharSetForm (svchp, errhp, locp, out csfrm);
+ }
+
+ internal static int OCINlsGetInfo (IntPtr hndl,
IntPtr errhp,
ref byte[] bufp,
- uint buflen,
- ushort item)
+ uint buflen,
+ ushort item)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCINlsGetInfo", "OCI");
+ #endif
return OciNativeCalls.OCINlsGetInfo (hndl, errhp, bufp, buflen, item);
}
int dblink_len,
uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIServerAttach", "OCI");
+ #endif
return OciNativeCalls.OCIServerAttach (srvhp, errhp, dblink, dblink_len, mode);
}
IntPtr errhp,
uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIServerDetach", "OCI");
+ #endif
return OciNativeCalls.OCIServerDetach (srvhp, errhp, mode);
}
IntPtr errhp,
ref byte[] bufp,
uint bufsz,
- OciHandleType hndltype)
+ OciHandleType hndltype)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIServerVersion", "OCI");
+ #endif
return OciNativeCalls.OCIServerVersion (hndlp,
errhp,
bufp,
OciCredentialType credt,
OciSessionMode mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCISessionBegin", "OCI");
+ #endif
return OciNativeCalls.OCISessionBegin (svchp, errhp, usrhp, credt, mode);
}
IntPtr usrhp,
uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCISessionEnd", "OCI");
+ #endif
return OciNativeCalls.OCISessionEnd (svchp, errhp, usrhp, mode);
}
out IntPtr parmdpp,
int pos)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIParamGet", "OCI");
+ #endif
return OciNativeCalls.OCIParamGet (hndlp, htype, errhp, out parmdpp, pos);
}
IntPtr snap_out,
OciExecuteMode mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIStmtExecute", "OCI");
-
+ #endif
+
uint it = 0;
if (iters == true)
it = 1;
-
+
return OciNativeCalls.OCIStmtExecute (svchp, stmthp, errhp, it, rowoff,
snap_in, snap_out, mode);
}
ushort orientation,
uint mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCIStmtFetch", "OCI");
+ #endif
return OciNativeCalls.OCIStmtFetch (stmtp, errhp, nrows, orientation, mode);
}
-
+
internal static int OCIStmtPrepare (IntPtr stmthp,
IntPtr errhp,
OciStatementLanguage language,
OciStatementMode mode)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, string.Format("OCIStmtPrepare ({0})", System.Text.Encoding.UTF8.GetString(stmt)), "OCI");
-
+ #endif
+
return OciNativeCalls.OCIStmtPrepare (stmthp, errhp, stmt, stmt_length, language, mode);
}
IntPtr errhp,
uint flags)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCITransCommit", "OCI");
+ #endif
return OciNativeCalls.OCITransCommit (svchp, errhp, flags);
}
IntPtr errhp,
uint flags)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCITransRollback", "OCI");
+ #endif
return OciNativeCalls.OCITransRollback (svchp, errhp, flags);
}
uint timeout,
OciTransactionFlags flags)
{
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCITransStart", "OCI");
+ #endif
return OciNativeCalls.OCITransStart (svchp, errhp, timeout, flags);
}
internal static int OCICharSetToUnicode (
IntPtr svchp,
- StringBuilder dst,
+ StringBuilder dst,
byte [] src,
out int rsize)
{
+ int rc;
+ long retSize;
+
+ #if TRACE
Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
-
- return OciNativeCalls.OCICharSetToUnicode (svchp, dst, dst!=null ? dst.Capacity : 0, src, src.Length, out rsize);
+ #endif
+ rc = OciNativeCalls.OCICharSetToUnicode (svchp, dst,
+ (dst != null ? dst.Capacity : 0),
+ src, src.Length, out retSize);
+ rsize = (int) retSize;
+ return(rc);
}
internal static int OCIUnicodeToCharSet (
IntPtr svchp,
byte [] dst,
- [MarshalAs (UnmanagedType.LPWStr)] string src,
- [MarshalAs (UnmanagedType.U4)] out int rsize)
+ string src,
+ out int rsize)
{
- Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
-
- return OciNativeCalls.OCIUnicodeToCharSet (svchp, dst, dst!=null ? dst.Length : 0, src, src.Length, out rsize);
+ int rc;
+ long retSize;
+
+ #if TRACE
+ Trace.WriteLineIf(traceOci, "OCIUnicodeToCharSet", "OCI");
+ #endif
+
+ rc = OciNativeCalls.OCIUnicodeToCharSet (svchp, dst,
+ (dst != null ? dst.Length : 0),
+ src, src.Length, out retSize);
+ rsize = (int) retSize;
+ return(rc);
}
[DllImport ("oci")]
- internal static extern int OCIDateTimeCheck (IntPtr hndl,\r
+ internal static extern int OCIDateTimeCheck (IntPtr hndl,
IntPtr err, IntPtr date, out uint valid);
#endregion
+
+ #region AllocateClear
+
+ private static bool IsUnix =
+ (int) Environment.OSVersion.Platform == 4 || (int) Environment.OSVersion.Platform == 128 || (int) Environment.OSVersion.Platform == 6;
+
+ [DllImport("libc")]
+ private static extern IntPtr calloc (int nmemb, int size);
+
+ private const int GMEM_ZEROINIT = 0x40;
+
+ [DllImport("kernel32")]
+ private static extern IntPtr GlobalAlloc (int flags, int bytes);
+
+ //http://download-uk.oracle.com/docs/cd/B14117_01/appdev.101/b10779/oci05bnd.htm#423147
+ internal static IntPtr AllocateClear (int cb)
+ {
+ if (IsUnix) {
+ return calloc (1, cb);
+ } else {
+ return GlobalAlloc (GMEM_ZEROINIT, cb);
+ }
+ }
+
+ #endregion AllocateClear
}
}