Oracle PL/SQL/PL SQL/Variable init

Материал из SQL эксперт
Перейти к: навигация, поиск

An initialization using the assignment operator (:=)

SQL>
SQL> -- An initialization using the assignment operator (:=).
SQL> set serverout on;
SQL>
SQL> DECLARE
  2     X NUMBER(11,2) := 10;
  3
  4  BEGIN
  5     DBMS_OUTPUT.PUT_LINE(x);
  6  END;
  7
  8  /
10
PL/SQL procedure successfully completed.
SQL>



Assign init value to a number

SQL>
SQL> -- Adding ELSE to the IF block.
SQL> set echo on
SQL> DECLARE
  2    v_HoursWorked Number := 50 ;
  3    v_OverTime Number ;
  4  BEGIN
  5    IF v_HoursWorked > 40 THEN
  6      v_OverTime := v_HoursWorked - 40;
  7         DBMS_OUTPUT.PUT_LINE("Hours overtime worked = " || v_OverTime);
  8    ELSE
  9      v_OverTime := 0;
 10    END IF;
 11  END;
 12  /
Hours overtime worked = 10
PL/SQL procedure successfully completed.
SQL>



Declare variables to be used in the block

 
SQL>
SQL> CREATE TABLE session (
  2    department       CHAR(3),
  3    course           NUMBER(3),
  4    description      VARCHAR2(2000),
  5    max_lecturer     NUMBER(3),
  6    current_lecturer NUMBER(3),
  7    num_credits      NUMBER(1),
  8    room_id          NUMBER(5)
  9    );
Table created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("HIS", 101, "History 101", 30, 11, 4, 20000);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("HIS", 301, "History 301", 30, 0, 4, 20004);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("CS", 101, "Computer Science 101", 50, 0, 4, 20001);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("ECN", 203, "Economics 203", 15, 0, 3, 20002);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("CS", 102, "Computer Science 102", 35, 3, 4, 20003);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("MUS", 410, "Music 410", 5, 4, 3, 20005);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("ECN", 101, "Economics 101", 50, 0, 4, 20007);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("NUT", 307, "Nutrition 307", 20, 2, 4, 20008);
1 row created.
SQL>
SQL> INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)
  2              VALUES ("MUS", 100, "Music 100", 100, 0, 3, NULL);
1 row created.
SQL>
SQL> DECLARE
  2    v_Department       CHAR(3)  := "ECN";
  3    v_Course           NUMBER(3) := 203;
  4    v_Description      VARCHAR2(20) := "Economics 203";
  5    studentMax      NUMBER := 15;
  6    studentCount       NUMBER := 0;
  7    v_NumCredits       NUMBER := 3;
  8    v_RoomID           NUMBER := 99997;
  9  BEGIN
 10    INSERT INTO session (department, course, description, max_lecturer,
 11                         current_lecturer, num_credits, room_id)
 12      VALUES (v_Department, v_Course, v_Description, studentMax,
 13              studentCount, v_NumCredits, v_RoomID);
 14  END;
 15  /
PL/SQL procedure successfully completed.
SQL>
SQL> select * from session;
DEP     COURSE
--- ----------
DESCRIPTION
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MAX_LECTURER CURRENT_LECTURER NUM_CREDITS    ROOM_ID
------------ ---------------- ----------- ----------
HIS        101
History 101
          30               11           4      20000
HIS        301
History 301
          30                0           4      20004
DEP     COURSE
--- ----------
DESCRIPTION
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MAX_LECTURER CURRENT_LECTURER NUM_CREDITS    ROOM_ID
------------ ---------------- ----------- ----------
CS         101
Computer Science 101
          50                0           4      20001
ECN        203
Economics 203
DEP     COURSE
--- ----------
DESCRIPTION
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MAX_LECTURER CURRENT_LECTURER NUM_CREDITS    ROOM_ID
------------ ---------------- ----------- ----------
          15                0           3      20002
CS         102
Computer Science 102
          35                3           4      20003
MUS        410
DEP     COURSE
--- ----------
DESCRIPTION
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MAX_LECTURER CURRENT_LECTURER NUM_CREDITS    ROOM_ID
------------ ---------------- ----------- ----------
Music 410
           5                4           3      20005
ECN        101
Economics 101
          50                0           4      20007

DEP     COURSE
--- ----------
DESCRIPTION
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MAX_LECTURER CURRENT_LECTURER NUM_CREDITS    ROOM_ID
------------ ---------------- ----------- ----------
NUT        307
Nutrition 307
          20                2           4      20008
MUS        100
Music 100
         100                0           3
DEP     COURSE
--- ----------
DESCRIPTION
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
MAX_LECTURER CURRENT_LECTURER NUM_CREDITS    ROOM_ID
------------ ---------------- ----------- ----------
ECN        203
Economics 203
          15                0           3      99997

10 rows selected.
SQL>
SQL> drop table session;
Table dropped.
SQL>



No initial value but Has a size

SQL>
SQL> -- No initial value but Has a size.
SQL> set serverout on;
SQL>
SQL> DECLARE
  2     X NUMBER(11,2);
  3
  4  BEGIN
  5
  6
  7     DBMS_OUTPUT.PUT_LINE(x);
  8
  9  END;
 10  /
PL/SQL procedure successfully completed.
SQL>