Number types in pl/sql, PL-SQL Programming

Assignment Help:

Number Types

The Number types permit you to store the numeric data (real numbers, integers, and floating-point numbers), show quantities, and do computations.

BINARY_INTEGER

You use the BINARY_INTEGER datatype to store the signed integers. Its magnitude ranges from -2147483647 to 2147483647. Like PLS_INTEGER values, BINARY_INTEGER values need less storage than NUMBER values. Though, most BINARY_INTEGER operations are slower than the PLS_INTEGER operations.

BINARY_INTEGER Subtypes

A base type is the datatype from which a subtype is derived. A subtype links a base type with a constraint and so defines a subset of the values. For your convenience, the PL/SQL predefines the following BINARY_INTEGER subtypes as shown below:

NATURAL

NATURALN

POSITIVE

POSITIVEN

SIGNTYPE

The subtypes NATURAL & POSITIVE restrict an integer variable to non-negative or positive values, respectively. The NATURALN and POSITIVEN prevent the assigning of nulls to an integer variable. The SIGNTYPE restrict an integer variable to the values -1, 0, and 1, which is useful in the programming tri-state logic.

NUMBER

You use the NUMBER datatype to store a fixed-point or floating-point numbers of virtually any sizes. Its magnitude range is 1E-130 to 10E125. If the value of an expression falls exterior to this range, you get a numeric overflow or underflow error. You can specify the precision that is the total number of digits, and the scale, which is the number of digits to the right of the decimal point. The syntax is as shown below:

NUMBER[(precision,scale)]

To declare a fixed-point numbers, for which you must specify the scale, use the form as shown:

NUMBER(precision,scale)

To declare a floating-point numbers, for which you cannot identify the precision or scale as the decimal point can "float" to any position, use the form as shown:

NUMBER

To declare the integers, that have no decimal point, use the form sown below:

NUMBER(precision) -- same as NUMBER(precision,0)

You cannot use the constants or variables to specify the precision and scale; you should use the integer literals. The highest precision of a NUMBER value is 38 decimal digits. If you do not specify the precision, it default to 38 or the highest supported by your system, either is less.

NUMBER Subtypes

You can use the NUMBER subtypes for compatibility with ANSI/ISO and IBM types or when you want a more expressive name:

DEC

DECIMAL

DOUBLE PRECISION

FLOAT

INTEGER

INT

NUMERIC

REAL

SMALLINT

Use the subtypes DEC, DECIMAL, & NUMERIC to declare the fixed-point numbers with a greatest precision of 38 decimal digits.

Use the subtypes DOUBLE PRECISION & FLOAT to declare the floating-point numbers with a greatest precision of 126 binary digits, which is roughly equal to 38 decimal digits. Or, use the subtype REAL to declare a floating-point numbers with a greatest precision of 63 binary digits, which is roughly equal to 18 decimal digits.

Use the subtypes INTEGER, INT, & SMALLINT to declare integers with a greatest precision of 38 decimal digits.

PLS_INTEGER

You use the PLS_INTEGER datatype to store the signed integers. Its magnitude ranges from

2147483647 to 2147483647. The PLS_INTEGER values need less storage than NUMBER values. The PLS_INTEGER operations also use the machine arithmetic; therefore they are faster than NUMBER & BINARY_INTEGER operations that use library arithmetic. For superior performance, use PLS_INTEGER for all computations that fall within its magnitude range.

Though PLS_INTEGER and BINARY_INTEGER have the same magnitude range, they are not fully compatible. If a PLS_INTEGER computations overflows, an exception is raised. However, if  a BINARY_INTEGER calculation overflows, no exception is raised if the result is assigned to a NUMBER variable.Number Types

The Number types permit you to store the numeric data (real numbers, integers, and floating-point numbers), show quantities, and do computations.

BINARY_INTEGER

You use the BINARY_INTEGER datatype to store the signed integers. Its magnitude ranges from -2147483647 to 2147483647. Like PLS_INTEGER values, BINARY_INTEGER values need less storage than NUMBER values. Though, most BINARY_INTEGER operations are slower than the PLS_INTEGER operations.

BINARY_INTEGER Subtypes

A base type is the datatype from which a subtype is derived. A subtype links a base type with a constraint and so defines a subset of the values. For your convenience, the PL/SQL predefines the following BINARY_INTEGER subtypes as shown below:

NATURAL

NATURALN

POSITIVE

POSITIVEN

SIGNTYPE

The subtypes NATURAL & POSITIVE restrict an integer variable to non-negative or positive values, respectively. The NATURALN and POSITIVEN prevent the assigning of nulls to an integer variable. The SIGNTYPE restrict an integer variable to the values -1, 0, and 1, which is useful in the programming tri-state logic.

NUMBER

You use the NUMBER datatype to store a fixed-point or floating-point numbers of virtually any sizes. Its magnitude range is 1E-130 to 10E125. If the value of an expression falls exterior to this range, you get a numeric overflow or underflow error. You can specify the precision that is the total number of digits, and the scale, which is the number of digits to the right of the decimal point. The syntax is as shown below:

NUMBER[(precision,scale)]

To declare a fixed-point numbers, for which you must specify the scale, use the form as shown:

NUMBER(precision,scale)

To declare a floating-point numbers, for which you cannot identify the precision or scale as the decimal point can "float" to any position, use the form as shown:

NUMBER

To declare the integers, that have no decimal point, use the form sown below:

NUMBER(precision) -- same as NUMBER(precision,0)

You cannot use the constants or variables to specify the precision and scale; you should use the integer literals. The highest precision of a NUMBER value is 38 decimal digits. If you do not specify the precision, it default to 38 or the highest supported by your system, either is less.

NUMBER Subtypes

You can use the NUMBER subtypes for compatibility with ANSI/ISO and IBM types or when you want a more expressive name:

DEC

DECIMAL

DOUBLE PRECISION

FLOAT

INTEGER

INT

NUMERIC

REAL

SMALLINT

Use the subtypes DEC, DECIMAL, & NUMERIC to declare the fixed-point numbers with a greatest precision of 38 decimal digits.

Use the subtypes DOUBLE PRECISION & FLOAT to declare the floating-point numbers with a greatest precision of 126 binary digits, which is roughly equal to 38 decimal digits. Or, use the subtype REAL to declare a floating-point numbers with a greatest precision of 63 binary digits, which is roughly equal to 18 decimal digits.

Use the subtypes INTEGER, INT, & SMALLINT to declare integers with a greatest precision of 38 decimal digits.

PLS_INTEGER

You use the PLS_INTEGER datatype to store the signed integers. Its magnitude ranges from

2147483647 to 2147483647. The PLS_INTEGER values need less storage than NUMBER values. The PLS_INTEGER operations also use the machine arithmetic; therefore they are faster than NUMBER & BINARY_INTEGER operations that use library arithmetic. For superior performance, use PLS_INTEGER for all computations that fall within its magnitude range.

Though PLS_INTEGER and BINARY_INTEGER have the same magnitude range, they are not fully compatible. If a PLS_INTEGER computations overflows, an exception is raised. However, if  a BINARY_INTEGER calculation overflows, no exception is raised if the result is assigned to a NUMBER variable.


Related Discussions:- Number types in pl/sql

Avoiding collection exceptions, Avoiding Collection Exceptions   In ma...

Avoiding Collection Exceptions   In many cases, if you reference a nonexistent collection element, then PL/SQL raises a predefined exception. Consider the illustration shown b

Merge and truncate in sql, MERGE and TRUNCATE in SQL SQL has two more ...

MERGE and TRUNCATE in SQL SQL has two more table update operators, MERGE and TRUNCATE. MERGE, like INSERT, takes a source table s and uses it to update a target table t. Brief

Row counterparts of table operators - sql, Row Counterparts of Table Operat...

Row Counterparts of Table Operators SQL does not have counterparts tuple rename, tuple projection, tuple extension, tuple join and tuple compose. To obtain the same effects as

Sql query on hospital database, Perform the following queries on the Hospit...

Perform the following queries on the Hospital1.DB using SQL Anywhere (START EARLY!). a. Which patients have purchased the drug "Tylenol"? List the names and addresses. Arrange the

Initializing records, Initializing Records The illustration below show...

Initializing Records The illustration below shows that you can initialize a record in its type definition. Whenever you declare a record of the type TimeRec, its 3 fields supp

Cursor for loops, Cursor FOR Loops In most cases that need an explicit ...

Cursor FOR Loops In most cases that need an explicit cursor, you can simplify the coding by using a cursor FOR loop rather of the OPEN, FETCH, and CLOSE statements. A cursor FO

Disjunction - sql, Disjunction (OR, ∨) Again we have nine rows instead...

Disjunction (OR, ∨) Again we have nine rows instead of just four and again, when unknown is not involved, the rows are as for 2VL. Also, when anything is paired with true, t

%notfound - explicit cursor attributes, %NOTFOUND The %NOTFOUND is log...

%NOTFOUND The %NOTFOUND is logical, opposite of the %FOUND. The %NOTFOUND yields FALSE if the last fetch returned a row, or TRUE when the final fetch failed to return a row. I

Change sql file into csv for product registration, Change Sql file into CSV...

Change Sql file into CSV for product registration on Magento Project Description: I have a set of files that are in Sql format and could like for a developer to help me with

Use the returning clause -improve performance of application, Use the RETUR...

Use the RETURNING Clause Frequently, the application requires information about the row affected by a SQL operation, for illustration, to produce a report or take a subsequent

Write Your Message!

Captcha
Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd