0% found this document useful (0 votes)
2K views

PLSQL Section 3 Quiz

The document provides examples and questions about using SQL in PL/SQL statements. It covers SQL data manipulation language (DML) such as INSERT, UPDATE, DELETE, and MERGE statements. It also discusses retrieving and manipulating data using PL/SQL, including using implicit cursors with DML statements and transaction control statements like SAVEPOINT, COMMIT, and ROLLBACK.

Uploaded by

Revindo Prakarsa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2K views

PLSQL Section 3 Quiz

The document provides examples and questions about using SQL in PL/SQL statements. It covers SQL data manipulation language (DML) such as INSERT, UPDATE, DELETE, and MERGE statements. It also discusses retrieving and manipulating data using PL/SQL, including using implicit cursors with DML statements and transaction control statements like SAVEPOINT, COMMIT, and ROLLBACK.

Uploaded by

Revindo Prakarsa
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Section 3: Using SQL in PL/SQL Statements

3.01. Review of SQL DML

1. Look at this SQL statement: MERGE INTO old_trans ot USING new_trans nt ON (ot.trans_id =
nt.trans_id) …. ; OLD_TRANS is the source table and NEW_TRANS is the target table. True or false?

♦True

♦False (*)

2. You want to modify existing rows in a table. Which of the following are NOT needed in your SQL
statement? (Choose Two)

♦A MODIFY clause (*)

♦An UPDATE clause

♦The name of the table

♦The name of the column(s) you want to modify.

♦A new value for the column you want to modify (this can be an expression or a subquery).

♦A WHERE clause. (*)

3. Is it possible to insert more than one row at a time using an INSERT statement with a VALUES
clause?

♦No, you can only create one row at a time when using the VALUES clause. (*)

♦Yes, you can list as many rows as you want, just remember to separate the rows with commas.

♦No, there is no such thing as INSERT … VALUES.

4. What is wrong with the following statement?

DELETE from employees WHERE salary > (SELECT MAX(salary) FROM employees);

♦You cannot code a subquery inside a DELETE statement.

♦You cannot use inequality operators such as “<” and “>” inside a DELETE statement.

♦Nothing is wrong, the statement will execute correctly. (*)


5. What is wrong with the following statement? MERGE INTO emps e USING new_emps ne ON
(e.employee_id = ne.employee_id) WHEN MATCHED THEN UPDATE SET ne.salary = e.salary WHEN
NOT MATCHED THEN INSERT VALUES (ne.employee_id, ne.first_name, ne.last_name, …. ne.salary,
….);

♦The UPDATE clause must include the target table name: UPDATE emps SET ….

♦The INSERT clause must include a column list as well as a list of column values.

♦The SET clause is trying to update the source table from the target table. (*)

♦Nothing is wrong, the statement will execute correctly.

6. To modify an existing row in a table, you can use the ________ statement.

♦MODIFY

♦INSERT

♦ALTER

♦UPDATE (*)

7. What would be the result of the following statement: DELETE employees;

♦Nothing, no data will be changed.

♦All rows in the employees table will be deleted. (*)

♦The statement will fail because it contains a syntax error.

♦The row with EMPOYEE_ID=100 will be deleted.

8. When inserting a row into a table, the VALUES clause must include a value for every column of
the table. True or False?

♦True

♦False (*)
3.02. Retrieving data in PL/SQL

1. It is good programming practice to create identifiers having the same name as column names.
True or False?

♦True

♦False (*)

2. Does PL/SQL allow you to have a variable with the same name as a database column?

♦No

♦Yes (*)

3. Which SQL statements can be used directly in a PL/SQL block? (Choose two.)

♦GRANT EXECUTE ON …

♦SELECT * INTO … (*)

♦REVOKE SELECT ON …

♦UPDATE employees SET… (*)

♦ALTER TABLE employees …

4. What will happen when the following block is executed? DECLARE v_last
employees.last_name%TYPE; v_first employees.first_name%TYPE; v_salary employees.salary%TYPE;
BEGIN SELECT first_name, last_name INTO v_first, v_last, v_salary FROM employees WHERE
employee_id=100; END;

♦The block will fail because the SELECT statement returns more than one row.

♦The block will fail because the SELECT is trying to read two columns into three PL/SQL variables. (*)

♦The block will fail because V_LAST was declared before V_FIRST.

♦The block will execute successfully, and the V_SALARY variable will be set to NULL.

5. Look at this PL/SQL block: DECLARE v_count NUMBER; BEGIN SELECT COUNT(*) INTO v_count
FROM employees WHERE salary > 50000; END; No employees earn more than $50000. Which of the
following statements are true? (Choose two).
♦The SELECT will return value 0 into V_COUNT. (*)

♦The SELECT will fail because it does NOT return exactly one row.

♦The block will fail because variable V_SALARY was not declared.

♦The SELECT returns exactly one row. (*)

♦The block will fail because no results are displayed to the user.

6. Which of the following is NOT a valid guideline for retrieving data in PL/SQL?

♦Terminate the SQL statement with a semicolon (;)

♦Do NOT use a WHERE clause in SELECT statements. (*)

♦Where possible, declare variables using the %TYPE attribute.

♦Specify the same number of variables in the INTO clause as database columns in the SELECT clause.

7. Which one of these SQL statements can be directly included in a PL/SQL executable block?

♦IF… THEN…;

♦INSERT INTO…; (*)

♦SELECT * FROM DUAL;

♦SHOW USER;

8. When used in a PL/SQL block, which SQL statement must return exactly one row?

♦INSERT

♦UPDATE

♦SELECT (*)

♦MERGE

♦DELETE

3.03. Manipulating data in PL/SQL

1. Which of the following SQL DML commands can be used inside a PL/SQL block?

♦INSERT and UPDATE only.

♦UPDATE and DELETE only.

♦INSERT, UPDATE and DELETE only.


♦INSERT, UPDATE, DELETE and MERGE. (*)

2. A PL/SQL block contains the following DML statement: UPDATE wf_countries SET population =
population * 1.1 WHERE country_id = 229; Which kind of cursor is used for this statement?

♦An implicit cursor named “WF_COUNTRIES”.

♦An implicit cursor named “SQL”. (*)

♦An explicit cursor named “SQL”.

♦An explicit cursor which must be declared and named by the PL/SQL programmer.

3. There are three employees in department 90. What will be displayed when the following code is
executed? DECLARE v_open CHAR(3) := ‘NO’; BEGIN UPDATE employees SET job_id = ‘ST_CLERK’
WHERE department_id = 90; IF SQL%FOUND THEN v_open := ‘YES’; END IF;
DBMS_OUTPUT.PUT_LINE(v_open || ‘ ‘ || SQL%ROWCOUNT); END;

♦NO 3

♦YES 1

♦YES 3 (*)

♦Nothing will be displayed. The block will fail because you cannot use implicit cursor attributes
directly in a call to DBMS_OUTPUT.PUT_LINE.

4. Which of the following use an implicit cursor?

♦DML statements only.

♦SELECT statements only.

♦DML statements and SELECT statements which return a single row. (*)

♦COMMIT and ROLLBACK statements only.

5. You can use implicit cursor attributes such as SQL%ROWCOUNT directly inside a DML statement.
For example: INSERT INTO log_table VALUES (SYSDATE, USER, SQL%ROWCOUNT); True or False?

♦True

♦False (*)
6. Employee_id 999 does not exist. What will happen when the following code is executed?
DECLARE employee_id employees.employee_id%TYPE := 999; BEGIN UPDATE employees SET salary =
salary * 1.1 WHERE employee_id = employee_id; END;

♦No rows are updated but the block completes successfully.

♦Every employee row is updated. (*)

♦An exception is raised because you cannot give a variable the same name as a table column.

♦An exception is raised because the UPDATE statement did not modify any rows.

3.04. Using Transaction Control Statements

1. Examine the following code: BEGIN

INSERT INTO animals VALUES (‘aa’,’aardvarks’);

SAVEPOINT sp_1;

INSERT INTO animals VALUES (‘bb’,’big birds’);

SAVEPOINT sp_2;

ROLLBACK TO sp_1;

INSERT INTO animals VALUES (‘cc’,’cool cats’);

COMMIT;

END;

Which row(s) will be in the ANIMALS table after this block is executed?

♦cool cats

♦big birds and cool cats

♦aardvaarks and cool cats (*)

♦aardvaarks, big birds and cool cats

2. How many INSERTs can you have in one transaction?

♦One

♦As many as you want until you do a COMMIT or ROLLBACK. (*)

♦As many as you can execute before the database does an AUTOSAVE.

♦As many as you want until a different DML statement (UPDATE, DELETE or MERGE) is executed.

3. In a PL/SQL block, where can you code a COMMIT statement?♦In any section of the block:
Declaration, Executable, or Exception.

♦Only the Executable section.


♦In the Executable and/or the Exception sections. (*)

♦Nowhere; the COMMIT statement must be outside the block.

4. How many transactions are in the following block?

BEGIN

INSERT INTO countries (country_id, country_name)

VALUES (‘XA’, ‘Xanadu’);

INSERT INTO countries (country_id, country_name)

VALUES (‘NV’, ‘Neverland’);

UPDATE countries SET country_name=’Deutchland’

WHERE country_id=’DE’;

UPDATE countries SET region_id=1

WHERE country_name LIKE ‘%stan’;

END;

How many transactions are shown above?

♦Four; each DML is a separate transaction

♦Two; both the INSERTs are one transaction and both the UPDATEs are a second transaction.

♦It depends on how many rows are updated – there will be a separate transaction for each row.

♦One (*)

You might also like