|
//------------------------------------------------------------------------------
// <copyright file="ITypedSettersV3.cs" company="Microsoft">
// Copyright (c) Microsoft Corporation. All rights reserved.
// </copyright>
// <owner current="true" primary="true">alazela</owner>
// <owner current="true" primary="false">stevesta</owner>
//------------------------------------------------------------------------------
namespace Microsoft.SqlServer.Server {
using System;
using System.Data.SqlTypes;
// interface for strongly-typed value setters
internal interface ITypedSettersV3 {
// By value setters (data copy across the interface boundary implied)
// All setters are valid for SqlDbType.Variant
// SetVariantMetaData is used to set the precise type of data just before pushing
// data into a variant type via one one of the other setters. It
// is only valid to set metadata with a SqlDbType that associated with with the
// data setter that will be called.
// Since LOBs, Udt's and fixed-length types are not currently stored in a variant,
// the following pairs are the only setters/sqldbtypes that need this call:
// NVarChar/VarChar + SetString (needed only for non-global collation, i.e. SqlString)
// Money/SmallMoney + SetInt64
void SetVariantMetaData( SmiEventSink sink, int ordinal, SmiMetaData metaData );
// Set value to null
// valid for all types
void SetDBNull( SmiEventSink sink, int ordinal );
// valid for SqlDbType.Bit
void SetBoolean( SmiEventSink sink, int ordinal, Boolean value );
// valid for SqlDbType.TinyInt
void SetByte( SmiEventSink sink, int ordinal, Byte value );
// Semantics for SetBytes are to modify existing value, not overwrite
// Use in combination with SetLength to ensure overwriting when necessary
// valid for SqlDbTypes: Binary, VarBinary, Image, Udt, Xml
// (VarBinary assumed for variants)
int SetBytes( SmiEventSink sink, int ordinal, long fieldOffset, byte[] buffer, int bufferOffset, int length );
void SetBytesLength( SmiEventSink sink, int ordinal, long length );
// Semantics for SetChars are to modify existing value, not overwrite
// Use in combination with SetLength to ensure overwriting when necessary
// valid for character types: Char, VarChar, Text, NChar, NVarChar, NText
// (NVarChar and global clr collation assumed for variants)
int SetChars( SmiEventSink sink, int ordinal, long fieldOffset, char[] buffer, int bufferOffset, int length );
void SetCharsLength( SmiEventSink sink, int ordinal, long length );
// valid for character types: Char, VarChar, Text, NChar, NVarChar, NText
void SetString( SmiEventSink sink, int ordinal, string value, int offset, int length );
// valid for SqlDbType.SmallInt
void SetInt16( SmiEventSink sink, int ordinal, Int16 value );
// valid for SqlDbType.Int
void SetInt32( SmiEventSink sink, int ordinal, Int32 value );
// valid for SqlDbType.BigInt, SqlDbType.Money, SqlDbType.SmallMoney
void SetInt64( SmiEventSink sink, int ordinal, Int64 value );
// valid for SqlDbType.Real
void SetSingle( SmiEventSink sink, int ordinal, Single value );
// valid for SqlDbType.Float
void SetDouble( SmiEventSink sink, int ordinal, Double value );
// valid for SqlDbType.Numeric (uses SqlDecimal since Decimal cannot hold full range)
void SetSqlDecimal( SmiEventSink sink, int ordinal, SqlDecimal value );
// valid for DateTime & SmallDateTime
void SetDateTime( SmiEventSink sink, int ordinal, DateTime value );
// valid for UniqueIdentifier
void SetGuid( SmiEventSink sink, int ordinal, Guid value );
}
}
|