summaryrefslogtreecommitdiff
path: root/mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs
diff options
context:
space:
mode:
Diffstat (limited to 'mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs')
-rw-r--r--mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs9
1 files changed, 7 insertions, 2 deletions
diff --git a/mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs b/mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs
index 31afb5cb32..8bbd545fa4 100644
--- a/mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs
+++ b/mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs
@@ -32,6 +32,7 @@ namespace System.Data.OracleClient.Oci {
bool moreResults;
OciServiceHandle serviceHandle;
ArrayList values;
+ ArrayList parm;
OracleCommand command;
#endregion // Fields
@@ -82,12 +83,11 @@ namespace System.Data.OracleClient.Oci {
if (disposing) {
if (values != null) {
- foreach (OciDefineHandle h in values)
+ foreach (OciDefineHandle h in values)
h.Dispose ();
values = null;
}
}
-
base.Dispose (disposing);
}
}
@@ -110,6 +110,9 @@ namespace System.Data.OracleClient.Oci {
OciParameterDescriptor output = new OciParameterDescriptor (this, handle);
output.ErrorHandle = ErrorHandle;
+ if (parm == null)
+ parm = new ArrayList();
+ parm.Add(handle);
return output;
}
@@ -228,6 +231,8 @@ namespace System.Data.OracleClient.Oci {
switch (status) {
case OciGlue.OCI_NO_DATA:
moreResults = false;
+ foreach (IntPtr h in parm)
+ OciCalls.OCIDescriptorFree(h, OciHandleType.Parameter);
break;
case OciGlue.OCI_DEFAULT:
moreResults = true;