1 // Licensed to the .NET Foundation under one or more agreements. 2 // The .NET Foundation licenses this file to you under the MIT license. 3 // See the LICENSE file in the project root for more information. 4 5 6 7 //------------------------------------------------------------------------------ 8 9 using System; 10 using System.Data.SqlTypes; 11 12 namespace Microsoft.SqlServer.Server 13 { 14 // Interface for strongly-typed value getters 15 internal interface ITypedGettersV3 16 { 17 // Null test 18 // valid for all types IsDBNull(SmiEventSink sink, int ordinal)19 bool IsDBNull(SmiEventSink sink, int ordinal); 20 21 // Check what type current sql_variant value is 22 // valid for SqlDbType.Variant GetVariantType(SmiEventSink sink, int ordinal)23 SmiMetaData GetVariantType(SmiEventSink sink, int ordinal); 24 25 // 26 // Actual value accessors 27 // valid type indicates column must be of the type or column must be variant 28 // and GetVariantType returned the type 29 // 30 31 // valid for SqlDbType.Bit GetBoolean(SmiEventSink sink, int ordinal)32 Boolean GetBoolean(SmiEventSink sink, int ordinal); 33 34 // valid for SqlDbType.TinyInt GetByte(SmiEventSink sink, int ordinal)35 Byte GetByte(SmiEventSink sink, int ordinal); 36 37 // valid for SqlDbTypes: Binary, VarBinary, Image, Udt, Xml, Char, VarChar, Text, NChar, NVarChar, NText 38 // (Character type support needed for ExecuteXmlReader handling) GetBytesLength(SmiEventSink sink, int ordinal)39 Int64 GetBytesLength(SmiEventSink sink, int ordinal); GetBytes(SmiEventSink sink, int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length)40 int GetBytes(SmiEventSink sink, int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length); 41 42 // valid for character types: Char, VarChar, Text, NChar, NVarChar, NText GetCharsLength(SmiEventSink sink, int ordinal)43 Int64 GetCharsLength(SmiEventSink sink, int ordinal); GetChars(SmiEventSink sink, int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length)44 int GetChars(SmiEventSink sink, int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length); GetString(SmiEventSink sink, int ordinal)45 String GetString(SmiEventSink sink, int ordinal); 46 47 // valid for SqlDbType.SmallInt GetInt16(SmiEventSink sink, int ordinal)48 Int16 GetInt16(SmiEventSink sink, int ordinal); 49 50 // valid for SqlDbType.Int GetInt32(SmiEventSink sink, int ordinal)51 Int32 GetInt32(SmiEventSink sink, int ordinal); 52 53 // valid for SqlDbType.BigInt, SqlDbType.Money, SqlDbType.SmallMoney GetInt64(SmiEventSink sink, int ordinal)54 Int64 GetInt64(SmiEventSink sink, int ordinal); 55 56 // valid for SqlDbType.Real GetSingle(SmiEventSink sink, int ordinal)57 Single GetSingle(SmiEventSink sink, int ordinal); 58 59 // valid for SqlDbType.Float GetDouble(SmiEventSink sink, int ordinal)60 Double GetDouble(SmiEventSink sink, int ordinal); 61 62 // valid for SqlDbType.Numeric (uses SqlDecimal since Decimal cannot hold full range) GetSqlDecimal(SmiEventSink sink, int ordinal)63 SqlDecimal GetSqlDecimal(SmiEventSink sink, int ordinal); 64 65 // valid for DateTime & SmallDateTime GetDateTime(SmiEventSink sink, int ordinal)66 DateTime GetDateTime(SmiEventSink sink, int ordinal); 67 68 // valid for UniqueIdentifier GetGuid(SmiEventSink sink, int ordinal)69 Guid GetGuid(SmiEventSink sink, int ordinal); 70 } 71 } 72 73