PL/SQL 2-5: Writing PL/SQL Executable Statements

 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

Post a Comment

0 Comments