OciParameterDescriptor.cs 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. //
  2. // OciParameterDescriptor.cs
  3. //
  4. // Part of managed C#/.NET library System.Data.OracleClient.dll
  5. //
  6. // Part of the Mono class libraries at
  7. // mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci
  8. //
  9. // Assembly: System.Data.OracleClient.dll
  10. // Namespace: System.Data.OracleClient.Oci
  11. //
  12. // Author:
  13. // Tim Coleman <[email protected]>
  14. //
  15. // Copyright (C) Tim Coleman, 2003
  16. //
  17. using System;
  18. using System.Data.OracleClient;
  19. using System.Runtime.InteropServices;
  20. namespace System.Data.OracleClient.Oci {
  21. internal sealed class OciParameterDescriptor : OciDescriptorHandle
  22. {
  23. #region Fields
  24. OciErrorHandle errorHandle;
  25. OciServiceHandle service;
  26. OciDataType type;
  27. #endregion // Fields
  28. #region Constructors
  29. public OciParameterDescriptor (OciHandle parent, IntPtr handle)
  30. : base (OciHandleType.Parameter, parent, handle)
  31. {
  32. }
  33. #endregion // Constructors
  34. #region Properties
  35. public OciErrorHandle ErrorHandle {
  36. get { return errorHandle; }
  37. set { errorHandle = value; }
  38. }
  39. #endregion // Properties
  40. #region Methods
  41. public string GetName ()
  42. {
  43. return GetAttributeString (OciAttributeType.Name, ErrorHandle);
  44. }
  45. public int GetDataSize ()
  46. {
  47. return (int) GetAttributeUInt16 (OciAttributeType.DataSize, ErrorHandle);
  48. }
  49. public OciDataType GetDataType ()
  50. {
  51. return (OciDataType) GetAttributeInt32 (OciAttributeType.DataType, ErrorHandle);
  52. }
  53. public Type GetFieldType (string sDataTypeName)
  54. {
  55. switch (sDataTypeName) {
  56. case "VarChar2":
  57. return typeof (System.String);
  58. case "Number":
  59. return typeof (System.Decimal);
  60. case "Integer":
  61. return typeof (System.Int32);
  62. case "Float":
  63. return typeof (System.Decimal);
  64. case "String":
  65. return typeof (System.String);
  66. case "VarNum":
  67. return typeof (System.Decimal);
  68. case "Long":
  69. return typeof (System.String);
  70. case "VarChar":
  71. return typeof (System.String);
  72. case "RowId":
  73. return typeof (System.String);
  74. case "Date":
  75. return typeof (System.DateTime);
  76. case "VarRaw":
  77. return Type.GetType ("System.Byte[]");
  78. case "Raw":
  79. return Type.GetType ("System.Byte[]");
  80. case "LongRaw":
  81. return Type.GetType ("System.Byte[]");
  82. case "UnsignedInt":
  83. return typeof (System.UInt32);
  84. case "LongVarChar":
  85. return typeof (System.String);
  86. case "LongVarRaw":
  87. return Type.GetType ("System.Byte[]");
  88. case "Char":
  89. return typeof (System.String);
  90. case "CharZ":
  91. return typeof (System.String);
  92. case "RowIdDescriptor":
  93. return typeof (System.String);
  94. case "NamedDataType":
  95. return typeof (System.String);
  96. case "Ref":
  97. return Type.GetType ("System.Data.OracleClient.OracleDataReader");
  98. case "Clob":
  99. return typeof (System.String);
  100. case "Blob":
  101. return Type.GetType ("System.Byte[]");
  102. case "BFile":
  103. return Type.GetType ("System.Byte[]");
  104. case "OciString":
  105. return typeof (System.String);
  106. case "OciDate":
  107. return typeof (System.DateTime);
  108. default:
  109. // FIXME: are these types correct?
  110. return typeof(System.String);
  111. }
  112. }
  113. public string GetDataTypeName ()
  114. {
  115. switch(GetDataType())
  116. {
  117. case OciDataType.VarChar2:
  118. return "VarChar2";
  119. case OciDataType.Number:
  120. return "Number";
  121. case OciDataType.Integer:
  122. return "Integer";
  123. case OciDataType.Float:
  124. return "Float";
  125. case OciDataType.String:
  126. return "String";
  127. case OciDataType.VarNum:
  128. return "VarNum";
  129. case OciDataType.Long:
  130. return "Long";
  131. case OciDataType.VarChar:
  132. return "VarChar";
  133. case OciDataType.RowId:
  134. return "RowId";
  135. case OciDataType.Date:
  136. return "Date";
  137. case OciDataType.VarRaw:
  138. return "VarRaw";
  139. case OciDataType.Raw:
  140. return "Raw";
  141. case OciDataType.LongRaw:
  142. return "LongRaw";
  143. case OciDataType.UnsignedInt:
  144. return "UnsignedInt";
  145. case OciDataType.LongVarChar:
  146. return "LongVarChar";
  147. case OciDataType.LongVarRaw:
  148. return "LongVarRaw";
  149. case OciDataType.Char:
  150. return "Char";
  151. case OciDataType.CharZ:
  152. return "CharZ";
  153. case OciDataType.RowIdDescriptor:
  154. return "RowIdDescriptor";
  155. case OciDataType.NamedDataType:
  156. return "NamedDataType";
  157. case OciDataType.Ref:
  158. return "Ref";
  159. case OciDataType.Clob:
  160. return "Clob";
  161. case OciDataType.Blob:
  162. return "Blob";
  163. case OciDataType.BFile:
  164. return "BFile";
  165. case OciDataType.OciString:
  166. return "OciString";
  167. case OciDataType.OciDate:
  168. return "OciDate";
  169. default:
  170. return "Unknown";
  171. }
  172. }
  173. public short GetPrecision ()
  174. {
  175. return (short) GetAttributeByte (OciAttributeType.Precision, ErrorHandle);
  176. }
  177. public short GetScale ()
  178. {
  179. return (short) GetAttributeSByte (OciAttributeType.Scale, ErrorHandle);
  180. }
  181. public bool GetIsNull ()
  182. {
  183. return GetAttributeBool (OciAttributeType.IsNull, ErrorHandle);
  184. }
  185. #endregion // Methods
  186. }
  187. }