with sql_standard; with sql_boolean_pkg; use sql_boolean_pkg; package sql_real_pkg is type sql_real_not_null is new sql_standard. real; type sql_real is limited private; function null_sql_real return sql_real; function without_null_base (value : sql_real) return sql_real_not_null; function with_null_base (value : sql_real_not_null) return sql_real; procedure assign_with_check (left : in out sql_real; right : sql_real; first, last : sql_real_not_null); function "+" (right : sql_real) return sql_real; function "-" (right : sql_real) return sql_real; function "abs" (right : sql_real) return sql_real; function "+" (left, right : sql_real) return sql_real; function "*" (left, right : sql_real) return sql_real; function "-" (left, right : sql_real) return sql_real; function "/" (left, right : sql_real) return sql_real; function "**" (left : sql_real; right : integer) return sql_real; function equals (left, right : sql_real) return boolean_with_unknown; function not_equals (left, right : sql_real) return boolean_with_unknown; function "<" (left, right : sql_real) return boolean_with_unknown; function ">" (left, right : sql_real) return boolean_with_unknown; function ">=" (left, right : sql_real) return boolean_with_unknown; function "<=" (left, right : sql_real) return boolean_with_unknown; function is_null (value : sql_real) return boolean; function not_null (value : sql_real) return boolean; function "=" (left, right : sql_real) return boolean; function "<" (left, right : sql_real) return boolean; function ">" (left, right : sql_real) return boolean; function ">=" (left, right : sql_real) return boolean; function "<=" (left, right : sql_real) return boolean; generic type with_null_type is limited private; type without_null_type is digits <>; with function with_null_base (value : sql_real_not_null) return with_null_type is <>; with function without_null_base (value : with_null_type) return sql_real_not_null is <>; with procedure assign_with_check (left : in out with_null_type; right : with_null_type; first, last : sql_real_not_null) is <>; package sql_real_ops is function with_null (value : without_null_type) return with_null_type; function without_null (value : with_null_type) return without_null_type; procedure assign (left : in out with_null_type; right : in with_null_type); end sql_real_ops; private type sql_real is record is_null : boolean := true; value : sql_real_not_null; end record; end sql_real_pkg;