DECLARE
Declare variables and constants in a PL/SQL declare block.Syntax:
name [CONSTANT] datatype [NOT NULL]
[:= | DEFAULT expr]
key
name : The name of the variable
datatype : may be scalar, composite, reference or LOB
expr : a literal value, another variable
or any plsql expression involving operators & functions
For readability put only one declaration per line .A constant MUST have it's initial value in the declaration.
Composite datatypes are TABLE, RECORD, NESTED TABLE and VARRAY
You can use [schema.]object%TYPE to define variables based on actual object datatypes.
Declaring RECORD variables
A specific RECORD TYPE corresponding to a fixed number (and datatype) of underlying table columns can simplify the job of defining variables.
%TYPE is used to declare a field with the same type as that of a specified table's column.
%ROWTYPE is used to declare a record with the same types as found in the specified database table, view or cursor.
Syntax:
TYPE type_name IS RECORD
(field_declaration,...);
Options
'field_declaration' is defined as:
field_name {field_type |
variable%TYPE |
table.column%TYPE |
table%ROWTYPE}
[ [NOT NULL] {:= | DEFAULT} expr ]
Where field_type is the datatype of the field
(any plsql datatype except REF CURSOR)
expr is the field_type or an initial value
Then to declare a record variable of this type..
identifier type_name;
Declare %ROWTYPE Record variables: DECLARE
variable_name table_name%ROWTYPE
At runtime the system will evaluate the number of variables and their datatype; The columns may be based on an underlying table or a cursor.Declare SQL*Plus bind variables.
Syntax:
plus > VARIABLE g_bar VARCHAR2(30) plus > ACCEPT p_foo PROMPT 'enter the value required'
You can reference host variables in PL/SQL statements *unless* the statement is in a procedure, function or package.
This is done by prefixing with & (to read the variable) or prefix with : (writing to the variable)
Examples:
DECLARE
-- Declare individual variables:
v_ename emp.ename%TYPE;
v_balance NUMBER(7,2);
v_min_bal v_balance%TYPE := 10;
-- Declare RECORD TYPE variable:
TYPE job_type IS RECORD
(jobid NUMBER(7,2),
jobname t_jobs.jb_name%Type);
job_record job_type;
-- Declare a variable based on SQL*Plus Bind variable
v_amount NUMBER(6,2) := &p_foo
-- Assign value to a SQL*Plus variable from a PL/SQL variable
BEGIN
:g_bar := v_amount *12
No comments:
Post a Comment