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