Database Programming with PL/SQL
2-5: Writing PL/SQL Executable Statements
Practice Activities
Vocabulary
Converts values from one data type to another by using built-in functions. - Explicit conversion
Converts data types dynamically if they are mixed in a statement. - Implicit conversion
Try It / Solve It
1. Examine the following code and then answer the questions.
DECLARE
x VARCHAR2(20);
BEGIN
x := '123' + '456' ;
DBMS_OUTPUT.PUT_LINE(x);
END;
A. What do you think the output will be when you run the above code?
Students may think that the answer might be: 579 or 123456 or Error
B. Now, run the code. What is the output?
579
C. In your own words, describe what happened when you ran the code. Did any implicit conversions take place?
PL/SQL implicitly converted the VARCHAR2 values to the NUMBER format and added them.
2. Write an anonymous PL/SQL block that assigns the programmer’s full name to a variable, and then displays the number of characters in the name.
DECLARE
v_name VARCHAR2(50) :='Barracuda';
v_length_name PLS_INTEGER;
BEGIN
v_length_name := LENGTH(v_name);
DBMS_OUTPUT.PUT_LINE(v_length_name);
END;
3. Write an anonymous PL/SQL block that uses today's date and outputs it in the format of ‘Month dd, yyyy’. Store the date in a DATE variable called my_date. Create another variable of the DATE type called v_last_day. Assign the last day of this month to v_last_day. Display the value of v_last_day.
DECLARE
my_date DATE := SYSDATE;
v_last_day DATE;
BEGIN
DBMS_OUTPUT.PUT_LINE(TO_CHAR(my_date, 'Month dd, yyyy'));
v_last_day := LAST_DAY(my_date);
DBMS_OUTPUT.PUT_LINE(v_last_day);
END;
4. Modify the program created in question 3 to add 45 days to today’s date and thencalculate and display the number of months between the two dates.
DECLARE
my_date DATE := SYSDATE;
new_date DATE;
v_months_between NUMBER;
BEGIN
new_date := my_date + 45;
v_months_between := MONTHS_BETWEEN(new_date,my_date);
DBMS_OUTPUT.PUT_LINE(v_months_between);
END;
5. Examine the following code and then answer the questions.
DECLARE
x NUMBER(6);
BEGIN
x := 5 + 3 * 2 ;
DBMS_OUTPUT.PUT_LINE(x);
END;
A. What do you think the output will be when you run the above code?
Students may think that the answer might be: 16 or 11
B. Now run the code. What is the output?
11
C. In your own words, explain the results.
The order of operations tells you that multiplication takes precedence over addition. Therefore, 3 * 2 is executed before 5 is added.
6. Examine the following code and then answer the question.
DECLARE
v_number NUMBER;
v_boolean BOOLEAN;
BEGIN
v_number := 25;
v_boolean := NOT(v_number > 30);
END;
What value is assigned to v_boolean?
TRUE. The condition (v_number > 30) is FALSE, and NOT FALSE = TRUE.
7. List two drawbacks to relying on implicit data type conversions.
Implicit datatype conversion can have a negative impact on performance
Implicit conversion depends on the context in which it occurs and may not work the same way in every case
0 Comments