Send feedback on this topic.
Teradata.Client.Provider
TdNumber Structure
Members  Example 



Teradata.Client.Provider Namespace : TdNumber Structure

The Teradata Database 14.0 and later supports a data type called NUMBER. This data type supports fixed point decimal (Fixed Decimal) and floating point (Floating Decimal) numbers. Fixed decimals can support up to 38 significant digits. Floating decimals can support up 40 digits, however, the precision of the number is guaranteed only up to 38 digits.

TdNumber is the equivalent Provider Specific Type to NUMBER. The range of TdNumber is +/-[1E-130 to 9.99...9E125] as well as 0. It will also support a precision of up to 40 digits.

TdNumber can also be used to receive and send numbers from and to the Advanced SQL Engine.

Object Model
TdNumber StructureTdNumber StructureTdNumber StructureTdNumber StructureTdNumber StructureTdNumber StructureTdNumber StructureTdNumber Structure
Syntax
Remarks

A number is stored in the following format:

X.XXXX...EYYY

The "X.XXXX..." represents the mantissa, and the "YYY" is the exponent (as a power of 10) of the number.

TdNumber supports arithmetic, comparison, and conversion methods .

TdNumber is similar to TdDecimal. The differences between these two types is that TdNumber can support a precision of up to 40 digits, and floating point numbers are supported. A TdDecimal can be implicitly converted to a TdNumber. A TdNumber must be explicitly converted to a TdDecimal.

A TdNumber value can be specified as an In, Out, or InOut parameter to a Stored Procedure. The following is an example of using TdNumber as a parameter to a Store Procedure.

Example
X.XXXX...EYYYThe following coding example is similar to the one in TdDecimal. Fixed point Numbers are from Teradata, modified, and then sent back to Teradata.
public void ManipulateNumber(TdConnection cn)
{
    // creating commands that will be used to execute SQL statements
    TdCommand cmd1 = cn.CreateCommand();
    TdCommand cmd2 = cn.CreateCommand();
 
    // query to rank the sales by region
    //    TotalSales is defined as Number(15,4)
    cmd1.CommandText = "select RegionId, TotalSales, Rank(TotalSales) " +
       "from (select RegionId, sum(SalesAmt) as TotalSales " +
               "from DetailedSales group by RegionId) as SalesByRegion";
   
 
    // setting up command that will insert rows returned from query into
    // the RankSalesByRegion table
    cmd2.CommandText = "insert into RankSalesByRegion (RegionId, " +
       "TotalSales, RegionRank) values (?, ?, ?)";
       
    cmd2.Parameters.Add(null, TdType.BigInt, 0, 
       System.Data.ParameterDirection.Input, 
       true, 0, 0, null, System.Data.DataRowVersion.Default, null);
       
    // Precision and Scale do get defined for NUMBER.  They are ignored by the provider.
    cmd2.Parameters.Add(null, TdType.Number, 0, 
       System.Data.ParameterDirection.Input, 
       true, 0, 0, null, System.Data.DataRowVersion.Default, null);
       
    cmd2.Parameters.Add(null, TdType.Integer, 0, 
       System.Data.ParameterDirection.Input,
       true, 0, 0, null, System.Data.DataRowVersion.Default, null);
 
    // TdNumber sumOfSales = new TdNumber(0);
    // could also have been used
    TdNumber sumOfSales = 0;
    TdNumber avgSalesByRegion = 0;
 
    TdNumber totalSales;
    
    TdDataReader reader;
    
    // Loop through the result set:
    //   Read data returned, and set the Value property of the corresponding
    //   TdParameter with the data returned for each column.
    using (reader = cmd1.ExecuteReader())
    {
        while (true == reader.Read())
        {
            // Reading a BIGINT and
            // Setting the RegionId parameter
            cmd2.Parameters[0].Value = reader.GetInt64(0);
 
            // Reading Number and
            // Setting the TotalSales parameter
            totalSales = reader.GetTdNumber(1);
            cmd2.Parameters[1].Value = totalSales;
 
            // Seting the RegionRank parameter
            cmd2.Parameters[2].Value = reader.GetInt32(2);
 
            // Summing up on the total sales
            sumOfSales += totalSales    ;
 
            cmd2.ExecuteNonQuery();
        }
    }
    
    // Calculating the avg sales by region
    // The reader.RecordsReturned is explicitly converted to TdNumber
    avgSalesByRegion = sumOfSales / (TdNumber)(reader.RecordsReturned);
 
    cmd1.Dispose();
    cmd2.Dispose();
}
public void CallCaculateSalesForRegion(TdConnection cn, Int32 RegionId)
{
    // Creating commands that will be used to execute SQL statements
    TdCommand cmd1 = cn.CreateCommand();
 
    // The CalculateSalesForRegion stored procedure has the 
    // following parameters:
    //     in RegionId Integer
    //     out Rank    Integer
    //     out SalesForRegion Number(38, 2)
    //     out PercentOfTotalSales Number(7, 4)
    cmd1.CommandText = "CaculateSalesForRegion";
    cmd1.CommandType = System.Data.CommandType.StoredProcedure;
   
    // Setting up parameters to return sales information for the 
    // specified region
    // 
    // Parameter for the RegionId
    Cmd1.Parameters.Add(null, TdType.Integer, 0, 
       System.Data.ParameterDirection.Input, 
       true, 0, 0, null, System.Data.DataRowVersion.Default, RegionId);
 
    // Parameter for the Rank
    cmd1.Parameters.Add(null, TdType.Integer, 0, 
       System.Data.ParameterDirection.Output, 
       true, 0, 0, null, System.Data.DataRowVersion.Default, null);
 
    // Parameter for the SalesForRegion
    cmd1.Parameters.Add(null, TdType.Number, 0, 
       System.Data.ParameterDirection.Output,
       true, 38, 2, null, System.Data.DataRowVersion.Default, null);
 
    // Parameter for the PercentOfTotalSales
    cmd1.Parameters.Add(null, TdType.Number, 0, 
       System.Data.ParameterDirection.Output,
       true, 7, 4, null, System.Data.DataRowVersion.Default, null);
 
    // Execute the Stored Procedure
    cmd1.ExecuteNonQuery();
 
    // Retrieve the data for each of the out parameters
   
    // Getting the data returned for the Rank
    Int32 rank = cmd1.Parameters[1].Value;
 
    // Getting the data returned for the SalesForRegion
    TdNumber salesForRegion = cmd1.Parameters[2].ProviderSpecificValue;
 
    // Getting the data returned for the PercentOfTotalSales
    //    Since the parameter is defined as a Number(7,4) an
    //    application can either retrieve the data using the
    //    TdParameter.ProviderSpecificValue or TdParameter.Value property.  
    //    ProviderSpecificValue will contain a TdNumber structure. 
    //    Value will contains a System.Double structure.
    TdNumber tdPercentOfTotalSales = cmdl.Parameters[3].ProviderSpecificValue;
    System.Decimal sysPercentOfTotalSales = cmd1.Parameters[3].Value;
 
    //
    // CONTINUE PROCESSING THE DATA RETURNED FROM THE STORED PROCEDURE
    //
 
    cmd1.Dispose();
}
Inheritance Hierarchy

System.Object
   System.ValueType
      Teradata.Client.Provider.TdNumber

Requirements

Target Platforms: Windows 8.1, Windows 10, Windows Server 2012 R2, Windows Server 2016, Windows Server 2019

See Also

Reference

TdNumber Members
Teradata.Client.Provider Namespace