プログラミング言語SML#解説 3.7.1版
22 SQL式とコマンド

22.10 SQLライブラリ:SQL.Numericストラクチャ

SQL.Numericストラクチャは, 標準SQLで最大の精度を持つ数値型NUMERICをエミュレートする.

SQL.Numericのシグネチャは以下の通りである.

structure SQL : sig
  
  structure Numeric : sig
    type num = SQL.numeric
    val toLargeInt : num -> LargeInt.int
    val fromLargeInt : LargeInt.int -> num
    val toLargeReal : num -> LargeReal.real
    val fromLargeReal : LargeReal.real -> num
    val toInt : num -> Int.int
    val fromInt : Int.int -> num
    val toDecimal : num -> IEEEReal.decimal_approx
    val + : num * num -> num
    val - : num * num -> num
    val * : num * num -> num
    val quot : num * num -> num
    val rem : num * num -> num
    val compare : num * num -> order
    val < : num * num -> bool
    val <= : num * num -> bool
    val > : num * num -> bool
    val >= : num * num -> bool
    val ~ : num -> num
    val abs : num -> num
    val toString : num -> string
    val fromString : string -> num option
  end
end

これらの関数の意味は Basis LibraryのIntおよびIntInfストラクチャに定義されている 同名の関数と同じである. toString関数は小数点以下に最大で16,383文字を出力するかも しれないことに注意せよ.

SQL.Numericストラクチャはあくまでデータベースとの データのやり取りのために用意されたものであり, 一般的な無限精度の10進数ライブラリを提供することを意図していない. 数値演算の性能を追求して実装されていないため, これらの関数は実用に適さないほど遅い可能性がある.

なお,SQL.numeric型の別名として SQL.decimal型が, SQL.Numericの別名としてSQL.Decimalストラクチャが, それぞれ提供されている.