Take This Oracle PL/SQL(1z0-147) Dumps Test

Reviewed by Editorial Team
The ProProfs editorial team is comprised of experienced subject matter experts. They've collectively created over 10,000 quizzes and lessons, serving over 100 million users. Our team includes in-house content moderators and subject matter experts, as well as a global network of rigorously trained contributors. All adhere to our comprehensive editorial guidelines, ensuring the delivery of high-quality content.
Learn about Our Editorial Process
| By Ranaguha
R
Ranaguha
Community Contributor
Quizzes Created: 3 | Total Attempts: 7,070
| Attempts: 3,776
SettingsSettings
Please wait...
  • 1/145 Questions

    You need to remove database trigger BUSINESS_RULE. Which command do you use to remove the trigger in the SQL*Plus environment?

    • DROP TRIGGER business_rule;
    • DELETE TRIGGER business_rule;
    • REMOVE TRIGGER business_rule;
    • ALTER TRIGGER business_rule;
    • DELETE FROM USER_TRIGGER
    • WHERE TRIGGER_NAME= ‘BUSINESS_RULE’;
Please wait...
About This Quiz

Have you practiced all the PL/SQL queries in Oracle? Take this Oracle PL/SQL(1z0-147) Dumps test to see how well you have practiced the queries and commands. This quiz will help you check your knowledge of queries as well as other facts related to the programming language. With this quiz, you can test your understanding as well as enhance your knowledge with instant feedback. Go for it, and all the best! Try to get a perfect score, as it will boost your confidence.

Take This Oracle PL/SQL(1z0-147) Dumps Test - Quiz

Quiz Preview

  • 2. 

    You need to remove the database trigger BUSINESS_HOUR . Which command do you use to remove the trigger in the SQL *Plus environment?

    • DROP TRIGGER business_hour;

    • DELETE TRIGGER business_hour;

    • REMOVE TRIGGER business_hour;

    • ALTER TRIGGER business_hour REMOVE;

    • DELETE FROM USER_TRIGGERS WHERE TRIGGER_NAME = .BUSINESS_HOUR;

    Correct Answer
    A. DROP TRIGGER business_hour;
    Explanation
    The correct command to remove a trigger in the SQL *Plus environment is "DROP TRIGGER business_hour;". This command removes the trigger named "business_hour" from the database.

    Rate this question:

  • 3. 

    This statement fails when executed: CREATE OR REPLACE TRI GGER CALC_TEAM_AVG AFTER I NSERT ON PLAYER BEGIN INSERT INTO PLAYER_BATSTAT ( PLAYER_I D, SEASON_YEAR, AT_BATS, HI TS) VALUES ( : NEW. I D, 1 997, 0, 0) ; END; To which type must you convert the trigger to correct the error?

    • Row

    • Statement

    • ORACLE FORM trigger

    • Before

    Correct Answer
    A. Row
    Explanation
    The given statement is a row-level trigger because it is triggered after each row is inserted into the PLAYER table. To correct the error, the trigger must be converted to a statement-level trigger. This means that the trigger will be executed once for each statement, regardless of the number of rows affected.

    Rate this question:

  • 4. 

    An internal LOB is _____.

    • A table

    • A column that is a primary key

    • Stored in the database.

    • A file stored outside of the database, with an internal pointer to it from a database column.

    Correct Answer
    A. Stored in the database.
    Explanation
    An internal LOB refers to a large object data type, such as text, image, or binary data, that is stored in the database. It is not a table or a column that is a primary key. Additionally, it is not a file stored outside of the database with an internal pointer to it from a database column. Therefore, the correct answer is that an internal LOB is stored in the database.

    Rate this question:

  • 5. 

    Under which two circumstances do you design database triggers? (Choose two)

    • To duplicate the functionality of other triggers.

    • To replicate built-in constraints in the Oracle server such as primary key and foreign key.

    • To guarantee that when a specific operation is performed, related actions are performed.

    • For centralized, global operations that should be fired for the triggering statement, regardless of which user or application issues the statement.

    Correct Answer(s)
    A. To guarantee that when a specific operation is performed, related actions are performed.
    A. For centralized, global operations that should be fired for the triggering statement, regardless of which user or application issues the statement.
    Explanation
    Database triggers are designed under two circumstances:
    1) To guarantee that when a specific operation is performed, related actions are performed. This means that when a certain event occurs in the database, the trigger will automatically execute a set of actions or procedures to ensure data consistency or enforce business rules.
    2) For centralized, global operations that should be fired for the triggering statement, regardless of which user or application issues the statement. This means that the trigger is designed to respond to a specific statement or event, regardless of who or what initiated it, ensuring consistent behavior across the database.

    Rate this question:

  • 6. 

    The OLD and NEW qualifiers can be used in which type of trigger?

    • Row level DML trigger

    • Row level system trigger

    • Statement level DML trigger

    • Row level application trigger

    • Statement level system trigger

    • Statement level application trigger

    Correct Answer
    A. Row level DML trigger
    Explanation
    The OLD and NEW qualifiers can be used in row level DML triggers. These qualifiers allow access to the old and new values of the affected rows in the trigger body. This is useful when performing actions based on changes made to specific columns in a table. In row level system triggers, statement level DML triggers, row level application triggers, statement level system triggers, and statement level application triggers, the OLD and NEW qualifiers are not available.

    Rate this question:

  • 7. 

    Examine this code: CREATE OR REPLACE TRIGGER update_emp AFTER UPDATE ON emp BEGIN INSERT INTO audit_table (who, dated) VALUES (USER, SYSDATE); END; You issue an UPDATE command in the EMP table that results in changing 10 rows. How many rows are inserted into the AUDIT_TABLE ?

    • 1

    • 10

    • None

    • A value equal to the number of rows in the EMP table.

    Correct Answer
    A. 1
    Explanation
    The code provided is a trigger that is executed after an update on the emp table. It inserts a row into the audit_table with the current user and date. Since the trigger is executed after each update, regardless of the number of rows updated, only one row will be inserted into the audit_table.

    Rate this question:

  • 8. 

    Examine this procedure: CREATE OR REPLACE PROCEDURE  DELETE_PLAYER(V_IDIN NUMBER) IS BEGIN DELETE FROM PLAYER WHERE ID =  V_ID EXCEPTION WHEN STATS_EXI TS_EXCEPTI ON THEN DBMS_OUTPUT.  PUT_LINE(Cannotdeletethisplayer, childrecordsexistin PLAYER_BAT_STAT table);END;  What prevents this procedure from being created successfully? 

    • A comma has been left after the STATS_EXIST_EXCEPTION exception.

    • The STATS_EXIST_EXCEPTION has not been declared as a number.

    • The STATS_EXIST_EXCEPTION has not been declared as an exception.

    • Only predefined exceptions are allowed in the EXCEPTION section.

    Correct Answer
    A. The STATS_EXIST_EXCEPTION has not been declared as an exception.
    Explanation
    The procedure cannot be created successfully because the STATS_EXIST_EXCEPTION has not been declared as an exception. In PL/SQL, when defining a procedure, any exceptions that are used within the procedure must be declared beforehand. Since STATS_EXIST_EXCEPTION has not been declared, the procedure cannot reference it as an exception.

    Rate this question:

  • 9. 

    Which view displays indirect dependencies, indenting each dependency?

    • DEPTREE

    • IDEPTREE

    • INDENT_TREE

    • I_DEPT_TREE

    Correct Answer
    A. IDEPTREE
    Explanation
    IDEPTREE is the correct answer because it is the view that displays indirect dependencies, indenting each dependency. This view provides a clear and organized representation of the dependencies by indenting each level, making it easier to understand the relationship between different elements.

    Rate this question:

  • 10. 

    You create a DML trigger. For the timing information, which is valid with a DML trigger?

    • DURING

    • INSTEAD

    • ON SHUTDOWN

    • BEFORE

    • ON STATEMENT EXECUTION

    Correct Answer
    A. BEFORE
    Explanation
    A DML trigger can be set to execute either before or after a DML operation is performed. In this case, the correct answer is "BEFORE," indicating that the trigger will be executed before the DML operation takes place. This allows the trigger to modify or validate the data before it is inserted, updated, or deleted in the database table.

    Rate this question:

  • 11. 

    When creating a function in SQL *Plus, you receive this message: .Warning: Function created with compilation errors.. Which command can you issue to see the actual error message?

    • SHOW FUNCTION_ERROR

    • SHOW USER_ERRORS

    • SHOW ERRORS

    • SHOW ALL_ERRORS

    Correct Answer
    A. SHOW ERRORS
    Explanation
    To see the actual error message when creating a function in SQL *Plus, you can issue the command "SHOW ERRORS". This command will display the compilation errors that occurred during the creation of the function, allowing you to identify and address any issues in your code.

    Rate this question:

  • 12. 

    Which code can you use to ensure that the salary is neither increased by more than 10% at a time nor is ever decreased?

    • ALTER TABLE emp ADD constraint_ck_sal CALC(sal BETWEEN sal AND sal*1.1);

    • CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal ON emp FOR EACH ROW WHEN(NEW.SALOLD.SAL*1.1) BEGIN RAISE_APPLICATION_ERROR(-20508, ‘do not decrease salary nor increase by more than 10%’); END;

    • CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal OR emp WHEN (NEW.SALOLD.SAL*1.1) BEGIN RAISE_APPLICATION_ERROR(-20508, ‘Do not decrease salary nor increase by more than 10%’);

    • CREATE OR REPLACE TRIGGER check_sal AFTER UPDATE OF sal OR emp WHEN (NEW.SALOLD.SAL*1.1) BEGIN RAISE_APPLICATION_ERROR(-20508, ‘Do not decrease salary nor increase by more than 10%’); END;

    Correct Answer
    A. CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal ON emp FOR EACH ROW WHEN(NEW.SALOLD.SAL*1.1) BEGIN RAISE_APPLICATION_ERROR(-20508, ‘do not decrease salary nor increase by more than 10%’); END;
    Explanation
    The correct answer is the first option: CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal ON emp FOR EACH ROW WHEN(NEW.SALOLD.SAL*1.1) BEGIN RAISE_APPLICATION_ERROR(-20508, ‘do not decrease salary nor increase by more than 10%’); END;

    This trigger is created before an update is made to the "sal" column in the "emp" table. It uses the WHEN clause to check if the new salary value is greater than the old salary value multiplied by 1.1 (10% increase). If this condition is met, the trigger raises an application error to prevent the update from happening. This ensures that the salary is neither increased by more than 10% at a time nor ever decreased.

    Rate this question:

  • 13. 

    You need to disable all triggers on the EMPLOYEES table. Which command accomplishes this?

    • None of these commands; you cannot disable multiple triggers on a table in one command.

    • ALTER TRIGGERS ON TABLE employees DISABLE;

    • ALTER employees DISABLE ALL TRIGGERS;

    • ALTER TABLE employees DISABLE ALL TRIGGERS;

    Correct Answer
    A. ALTER TABLE employees DISABLE ALL TRIGGERS;
    Explanation
    The correct answer is "ALTER TABLE employees DISABLE ALL TRIGGERS;" as this command specifically targets the EMPLOYEES table and disables all triggers associated with it. The other options provided are incorrect as they either do not include the "TABLE" keyword or do not specify disabling all triggers.

    Rate this question:

  • 14. 

    You need to implement a virtual private database (vpd). In order to have the vpd functionality, a trigger is required to fire when every user initiates a session in the database. What type of trigger needs to be created?

    • DML trigger

    • System event trigger

    • INSTEAD OF trigger

    • Application trigger

    Correct Answer
    A. System event trigger
    Explanation
    A system event trigger needs to be created in order to have the virtual private database (vpd) functionality. This type of trigger fires when every user initiates a session in the database, allowing for the implementation of the vpd.

    Rate this question:

  • 15. 

    Which two program declarations are correct for a stored program unit? (Choose two)

    • CREATE OR REPLACE FUNCTION tax_amt (p_id NUMBER) RETURN NUMBER

    • CREATE OR REPLACE PROCEDURE tax_amt (p_id NUMBER) RETURN NUMBER

    • CREATE OR REPLACE PROCEDURE tax_amt (p_id NUMBER, p_amount OUT NUMBER)

    • CREATE OR REPLACE FUNCTION tax_amt (p_id NUMBER) RETURN NUMBER(10,2)

    • CREATE OR REPLACE PROCEDURE tax_amt (p_id NUMBER, p_amount OUT NUMBER(10, 2))

    Correct Answer(s)
    A. CREATE OR REPLACE FUNCTION tax_amt (p_id NUMBER) RETURN NUMBER
    A. CREATE OR REPLACE PROCEDURE tax_amt (p_id NUMBER, p_amount OUT NUMBER)
    Explanation
    The two correct program declarations for a stored program unit are:

    1) CREATE OR REPLACE FUNCTION tax_amt (p_id NUMBER) RETURN NUMBER
    This is a correct declaration for a stored function named tax_amt that takes in a parameter p_id of type NUMBER and returns a value of type NUMBER.

    2) CREATE OR REPLACE PROCEDURE tax_amt (p_id NUMBER, p_amount OUT NUMBER)
    This is a correct declaration for a stored procedure named tax_amt that takes in two parameters: p_id of type NUMBER and p_amount of type NUMBER. The p_amount parameter is an OUT parameter, meaning it can be used to return a value to the calling program.

    Rate this question:

  • 16. 

    You are about to change the arguments of the CALC_TEAM_AVG function. Which dictionary view can you query to determine the names of the procedures and functions that invoke the CALC_TEAM_AVG function?

    • USER_PROC_DEPENDS

    • USER_DEPENDENCIES

    • USER_REFERENCES

    • USER_SOURCE

    Correct Answer
    A. USER_DEPENDENCIES
    Explanation
    You can query the USER_DEPENDENCIES dictionary view to determine the names of the procedures and functions that invoke the CALC_TEAM_AVG function. The USER_DEPENDENCIES view provides information about dependencies between database objects, including procedures and functions. By querying this view, you can identify which objects are dependent on the CALC_TEAM_AVG function and therefore may need to be updated if the arguments of the function are changed.

    Rate this question:

  • 17. 

    You have a row level BEFORE UPDATE trigger on the EMP table. This trigger contains a SELECT statement on the EMP table to ensure that the new salary value falls within the minimum and maximum salary for a given job title. What happens when you try to update a salary value in the EMP table?

    • The trigger fires successfully.

    • The trigger fails because it needs to be a row level AFTER UPDATE trigger.

    • The trigger fails because a SELECT statement on the table being updated is not allowed.

    • The trigger fails because you cannot use the minimum and maximum functions in a BEFORE UPDATE trigger.

    Correct Answer
    A. The trigger fails because a SELECT statement on the table being updated is not allowed.
    Explanation
    The trigger fails because a SELECT statement on the table being updated is not allowed. In Oracle, when a trigger is fired, it cannot contain a SELECT statement on the table that is being updated. This is to prevent any potential conflicts or inconsistencies that may arise from querying the same table that is currently being modified. Therefore, in this scenario, the trigger fails because it violates this restriction.

    Rate this question:

  • 18. 

    Examine this package: CREATE OR REPLACE PACKAGE manage_emps IS tax_rate CONSTANT NUMBER(5,2) := .28; v_id NUMBER; PROCEDURE insert_emp (p_deptno NUMBER, p_sal NUMBER); PROCEDURE delete_emp; PROCEDURE update_emp; FUNCTION calc_tax (p_sal NUMBER) RETURN NUMBER; END manage_emps; / CREATE OR REPLACE PACKAGE BODY manage_emps IS PROCEDURE update_sal (p_raise_amt NUMBER) IS BEGIN UPDATE emp SET sal = (sal * p_raise_emt) + sal WHERE empno = v_id; END; PROCEDURE insert_emp (p_deptno NUMBER, p_sal NUMBER) IS BEGIN INSERT INTO emp(empno, deptno, sal) VALYES(v_id, p_depntno, p_sal); END insert_emp; PROCEDURE delete_emp IS BEGIN DELETE FROM emp WHERE empno = v_id; END delete_emp; PROCEDURE update_emp IS v_sal NUMBER(10, 2); v_raise NUMBER(10, 2); BEGIN SELECT sal INTO v_sal FROM emp WHERE empno = v_id; IF v_sal < 500 THEN v_raise := .05; ELSIF v_sal < 1000 THEN v_raise := .07; ELSE v_raise := .04; END IF; update_sal(v_raise); END update_emp; FUNCTION calc_tax (p_sal NUMBER) RETURN NUMBER IS BEGIN RETURN p_sal * tax_rate; END calc_tax; END manage_emps; / What is the name of the private procedure in this package?

    • CALC_TAX

    • INSERT_EMP

    • UPDATE_SAL

    • DELETE_EMP

    • UPDATE_EMP

    • MANAGE_EMPS

    Correct Answer
    A. UPDATE_SAL
    Explanation
    The name of the private procedure in this package is UPDATE_SAL.

    Rate this question:

  • 19. 

    Which two dopes the INSTEAD OF clause in a trigger identify? (Choose two)

    • The view associated with the trigger.

    • The table associated with the trigger.

    • The event associated with the trigger.

    • The package associated with the trigger.

    • The statement level or for each row association to the trigger.

    Correct Answer(s)
    A. The view associated with the trigger.
    A. The event associated with the trigger.
    Explanation
    The INSTEAD OF clause in a trigger identifies the view associated with the trigger and the event associated with the trigger.

    Rate this question:

  • 20. 

    Which type of argument passes a value from a procedure to the calling environment?

    • VARCHAR2

    • BOOLEAN

    • OUT

    • IN

    Correct Answer
    A. OUT
    Explanation
    The type of argument that passes a value from a procedure to the calling environment is the "OUT" argument. When a procedure is called with an OUT argument, it allows the procedure to modify the value of the argument and pass it back to the calling environment. This allows for two-way communication between the procedure and the calling environment.

    Rate this question:

  • 21. 

    When creating store procedures and functions which construct allows you to transfer values to and from the calling environment?

    • Local variables.

    • Arguments.

    • Boolean variables.

    • Substitution variables.

    Correct Answer
    A. Arguments.
    Explanation
    When creating store procedures and functions, the construct that allows you to transfer values to and from the calling environment is called "Arguments". Arguments are variables that are defined within the procedure or function and can be passed values from the calling environment. These values can then be used within the procedure or function to perform calculations or operations, and the results can be returned back to the calling environment.

    Rate this question:

  • 22. 

    A CALL statement inside the trigger body enables you to call ______.

    • A package.

    • A stored function.

    • A stored procedure.

    • Another database trigger.

    Correct Answer
    A. A stored procedure.
    Explanation
    A CALL statement inside the trigger body enables you to call a stored procedure. This allows you to execute a set of predefined instructions or actions within the trigger, providing more flexibility and functionality in the trigger's logic. By calling a stored procedure, you can encapsulate complex operations or business logic in a separate module, improving code reusability and maintainability.

    Rate this question:

  • 23. 

    Which statement is valid when removing procedures?

    • Use a drop procedure statement to drop a standalone procedure.

    • Use a drop procedure statement to drop a procedure that is part of a package. Then recompile the package specification.

    • Use a drop procedure statement to drop a procedure that is part of a package. Then recompile the package body.

    • For faster removal and re-creation, do not use a drop procedure statement. Instead, recompile the procedure using the alter procedure statement with the REUSE SETTINGS clause.

    Correct Answer
    A. Use a drop procedure statement to drop a standalone procedure.
    Explanation
    The correct answer is "Use a drop procedure statement to drop a standalone procedure." This statement is valid because it specifically mentions dropping a standalone procedure, indicating that it is not part of a package. The other options mention dropping procedures that are part of a package and recompiling the package specification or body, which are not relevant to removing standalone procedures. The last option suggests recompiling the procedure instead of using a drop statement, but this is not the most efficient method for removal.

    Rate this question:

  • 24. 

    Examine this package CREATE OR REPLACE PACKAGE BB_PACK IS V_MAX_TEAM_SALARY NUMBER(12,2); PROCEDURE ADD_PLAYER(V_ID IN NUMBER, V_LAST_NAME) VARCHAR2(V_SALARY NUMBER); END BB_PACK; / CREATE OR REPLACE PACKAGE BODY BB_PACK IS V_PLAYER_AVG NUMBER(4,3); PROCEDURE UPD_PLAYER_STAT V_ID IN NUMBER, V_AB IN NUMBER DEFAULT4, V_HITS IN NUMBER) IS BEGIN UPDATE PLAYER_BAT_STAT SET ADD_BAT=ADD_BATS+V_AB, HITS=HITS+V_HITS WHERE PLAYER_ID=V_ID; COMMIT; VALIDATE_PLAYER_STAT(V_ID); END UPD_PLAYER_STAT; PROCEDURE ADD_PLAYER (V_ID IN NUMBER, V_LAST_NAME, VARCHAR2, V_SALARY IN NUMBER); IS BEGIN INSERT INTO PLAYER (ID, LAST_NAME, SALARY) VALUES(V_ID, V_LAST_NAME, V_SALARY); UPD_PLAYER_STAT(V_ID,0,0); END ADD_PLAYER; END BB_PACK; 22 Which kind of packaged variables is V_MAX_TEAM_SALARY?

    • PRIVATE

    • PUBLIC

    • IN

    • OUT

    Correct Answer
    A. PUBLIC
    Explanation
    V_MAX_TEAM_SALARY is a public packaged variable. Public variables can be accessed and used by other programs or packages outside of the current package.

    Rate this question:

  • 25. 

    You have the following table: CREATE TABLE Emp_log ( Emp_id NUMBER Log_date DATE, New_salary NUMBER, Action VARCHAR (20)); You have the following data in the EMPLOYEES table: EMPLOYEE_ID LAST_NAME SALARY DEPARTMENT_ID ----------- ------------------- ------------ ------------- 100 King 24000 90 101 Kochhar 17000 90 102 De Haan 17000 90 103 Hunold 9000 60 104 Ernst 6000 60 105 Austin 4800 60 106 Pataballa 4800 60 107 Lorentz 4200 60 108 Greenberg 12000 100 201 Hartstein 13000 20 202 Fay 6000 20 You create this trigger: CREATE OR REPLACE TRIGGER Log_salary_increase 36 AFTER UPDATE ON employees FOR EACH ROW WHEN (new.Salary > 1000) BEGIN INSERT INTO Emp_log (Emp_id, Log_date, New_Salary, Action) VALUES (: new.Employee_id, SYSDATE, :new.salary, 'NEW SAL' ); END / Then, you enter the following SQL statement: UPDATE Employee SET Salary = Salary + 1000.0 Where Department_id = 20M What are the result in the EMP_LOG table?

    • EMP_ID LOG_DATE NEW_SALARY ACTION ---------- -------- ---------- ---------- 201 24-SEP-02 13000 NEW SAL 202 24-SEP-02 600 NEW SAL

    • EMP_ID LOG_DATE NEW_SALARY ACTION ---------- -------- ---------- ---------- 201 24-SEP-02 14000 NEW SAL 202 24-SEP-02 7000 NEW SAL

    • EMP_ID LOG_DATE NEW_SALARY ACTION ---------- -------- ---------- ---------- 201 24-SEP-02 NEW SAL 202 24-SEP-02 NEW SAL

    • No rows are inserted.

    Correct Answer
    A. EMP_ID LOG_DATE NEW_SALARY ACTION ---------- -------- ---------- ---------- 201 24-SEP-02 14000 NEW SAL 202 24-SEP-02 7000 NEW SAL
    Explanation
    The trigger "Log_salary_increase" is created to insert a new record into the "Emp_log" table whenever an update is made to the "Salary" column in the "employees" table, and the new salary is greater than 1000.0. In the given SQL statement, the update is only applied to the employees in the department with ID 20. Since the salaries of employees 201 and 202 are increased by 1000.0, which makes their new salaries greater than 1000.0, two new records are inserted into the "Emp_log" table with the corresponding employee IDs, log dates, new salaries, and action as "NEW SAL". Therefore, the result in the "EMP_LOG" table would be:

    EMP_ID LOG_DATE NEW_SALARY ACTION
    ---------- -------- ---------- ----------
    201 24-SEP-02 14000 NEW SAL
    202 24-SEP-02 7000 NEW SAL

    Rate this question:

  • 26. 

    Examine this code: CREATE OR REPLACE PROCEDURE insert_dept (p_location_id NUMBER) IS v_dept_id NUMBER(4); BEGIN INSERT INTO departments VALUES (5, .Education ., 150, p_location_id); SELECT department_id INTO v_dept_id FROM employees WHERE employee_id=99999; END insert_dept; / CREATE OR REPLACE PROCEDURE insert_location ( p_location_id NUMBER, p_city VARCHAR2) IS BEGIN INSERT INTO locations(location_id, city) VALUES (p_location_id, p_city); insert_dept(p_location_id); END insert_location; / You just created the departments, the locations, and the employees table. You did not insert any rows. Next you created both procedures. You new invoke the insert_location procedure using the following command: EXECUTE insert_location (19, .San Francisco .) What is the result in this EXECUTE command?

    • The locations, departments, and employees tables are empty.

    • The departments table has one row. The locations and the employees tables are empty.

    • The location table has one row. The departments and the employees tables are empty.

    • The locations table and the departments table both have one row. The employees table is empty.

    Correct Answer
    A. The locations, departments, and employees tables are empty.
    Explanation
    The result of the EXECUTE command is that the locations, departments, and employees tables are empty. This is because the code does not include any INSERT statements to populate the tables with data. Therefore, when the insert_location procedure is invoked, it does not insert any rows into the tables.

    Rate this question:

  • 27. 

    Which table should you query to determine when your procedure was last compiled?

    • USER_PROCEDURES

    • USER_PROCS

    • USER_OBJECTS

    • USER_PLSQL_UNITS

    Correct Answer
    A. USER_OBJECTS
    Explanation
    To determine when a procedure was last compiled, you should query the USER_OBJECTS table. This table contains information about all objects owned by the current user, including procedures. The LAST_DDL_TIME column in the USER_OBJECTS table indicates the timestamp of the last compile or modification of the object. Therefore, by querying this table and filtering for the specific procedure, you can retrieve the last compilation time of the procedure.

    Rate this question:

  • 28. 

    Which code can you use to ensure that the salary is not increased by more than 10% at a time nor is it ever decreased?

    • ALTER TABLE emp ADD CONSTRAINT ck_sal CHECK (sal BETWEEN sal AND sal*1.1);

    • CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal ON emp FOR EACH ROW WHEN (new.sal < old.sal OR new.sal > old.sal * 1.1) BEGIN RAISE_APPLICATION_ERROR ( - 20508, .Do not decrease salary not increase by more than 10% ); END;

    • CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal ON emp WHEN (new.sal < old.sal OR new.sal > old.sal * 1.1) BEGIN RAISE_APPLICATION_ERROR ( - 20508, .Do not decrease salary not increase by more than 10% ); END;

    • CREATE OR REPLACE TRIGGER check_sal AFTER UPDATE OR sal ON emp WHEN (new.sal < old.sal OR -new.sal > old.sal * 1.1) BEGIN RAISE_APPLICATION_ERROR ( - 20508, .Do not decrease salary not increase by more than 10% ); END;

    Correct Answer
    A. CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal ON emp FOR EACH ROW WHEN (new.sal < old.sal OR new.sal > old.sal * 1.1) BEGIN RAISE_APPLICATION_ERROR ( - 20508, .Do not decrease salary not increase by more than 10% ); END;
    Explanation
    The correct answer is the third option: CREATE OR REPLACE TRIGGER check_sal BEFORE UPDATE OF sal ON emp FOR EACH ROW WHEN (new.sal < old.sal OR new.sal > old.sal * 1.1) BEGIN RAISE_APPLICATION_ERROR ( - 20508, "Do not decrease salary not increase by more than 10%"); END. This trigger ensures that the salary is not decreased and is not increased by more than 10% at a time. It checks if the new salary is less than the old salary or greater than 10% of the old salary, and if so, it raises an application error with the specified message.

    Rate this question:

  • 29. 

    Debug the logic in a stored procedure. How do you monitor the value of variables in the procedure using SQL Plus environment?

    • INSERT TEXT_IO.PUT_LINE statement to view data on the screen when the stored procedure is executed.

    • Insert break points in the code and observe the variable values displayed to the screen as the procedure is executed.

    • Insert DBMS_OUTPUT.PUT_LINE statement to view data on the screen when the stored procedure is executed.

    • Insert DEBUG VARIABLE statements to view the variable values on the screen as the procedure is executed.

    Correct Answer
    A. Insert DBMS_OUTPUT.PUT_LINE statement to view data on the screen when the stored procedure is executed.
    Explanation
    By inserting the DBMS_OUTPUT.PUT_LINE statement in the stored procedure, the data can be viewed on the screen when the procedure is executed. This statement allows for monitoring of the variable values in real-time as the procedure is being executed. It is a common practice to use DBMS_OUTPUT.PUT_LINE for debugging purposes in SQL Plus environment.

    Rate this question:

  • 30. 

    You disabled all triggers on the EMPLOYEES table to perform a data load. Now, you need to enable all triggers on the EMPLOYEES table. Which command accomplished this?

    • You cannot enable multiple triggers on a table in one command.

    • ALTER TRIGGERS ON TABLE employees ENABLE;

    • ALTER employees ENABLE ALL TRIGGERS;

    • ALTER TABLE employees ENABLE ALL TRIGGERS;

    Correct Answer
    A. ALTER TABLE employees ENABLE ALL TRIGGERS;
    Explanation
    The correct answer is "ALTER TABLE employees ENABLE ALL TRIGGERS;". This command enables all triggers on the EMPLOYEES table.

    Rate this question:

  • 31. 

    What is true about stored procedures?

    • A stored procedure uses the DELCLARE keyword in the procedure specification to declare formal parameters.

    • A stored procedure is named PL/SQL block with at least one parameter declaration in the procedure specification.

    • A stored procedure must have at least one executable statement in the procedure body.

    • A stored procedure uses the DECLARE keyword in the procedure body to declare formal parameters.

    Correct Answer
    A. A stored procedure must have at least one executable statement in the procedure body.
    Explanation
    A stored procedure must have at least one executable statement in the procedure body. This means that a stored procedure cannot be empty and must contain at least one statement that can be executed when the procedure is called.

    Rate this question:

  • 32. 

    Examine this code: CREATE OR REPLACE PROCEDURE audit_action (p_who VARCHAR2) AS BEGIN INSERT INTO audit(schema_user) VALUES(p_who); END audit_action; / CREATE OR REPLACE TRIGGER watch_it AFTER LOGON ON DATABASE CALL audit_action(ora_login_user) / What does this trigger do?

    • The trigger records an audit trail when a user makes changes to the database.

    • The trigger marks the user as logged on to the database before an audit statement is issued.

    • The trigger invoked the procedure audit_action each time a user logs on to his/her schema and adds the username to the audit table.

    • The trigger invokes the procedure audit_action each time a user logs on to the database and adds the username to the audit table.

    Correct Answer
    A. The trigger invokes the procedure audit_action each time a user logs on to the database and adds the username to the audit table.
    Explanation
    The given trigger, "watch_it", is an "AFTER LOGON" trigger, which means it will be executed after a user logs on to the database. This trigger calls the "audit_action" procedure and passes the "ora_login_user" as the parameter, which represents the username of the user who logged in. The "audit_action" procedure then inserts the username into the "audit" table. Therefore, the trigger invokes the procedure each time a user logs on to the database and adds the username to the audit table.

    Rate this question:

  • 33. 

    Examine this code: CREATE OR REPLACE FUNCTION gen_email_name (p_first_name VARCHAR2, p_last_name VARCHAR2, p_id NUMBER) RETURN VARCHAR2 IS v_email_name VARCHAR2(19); 6 BEGIN v_email_name := SUBSTR(p_first_name, 1, 1) || SUBSTR(p_last_name, 1, 7) || [email protected] .; UPDATE employees SET email = v_email_name WHERE employee_id = p_id; RETURN v_email_name; END; Which statement removes the function?

    • DROP gen_email_name;

    • REMOVE gen_email_name;

    • DELETE gen_email_name;

    • DROP FUNCTION gen_email_name;

    Correct Answer
    A. DROP FUNCTION gen_email_name;
    Explanation
    The DROP FUNCTION gen_email_name; statement removes the function gen_email_name from the database. This statement is used to delete a stored function from the database.

    Rate this question:

  • 34. 

    Which four triggering events can cause a trigger to fire? (Choose four)

    • A specific error or any errors occurs.

    • A database is shut down or started up.

    • A specific user or any user logs on or off.

    • A user executes a CREATE or an ALTER table statement

    • A user executes a SELECT statement with an ORDER BY clause.

    • A user executes a JOIN statement that uses four or more tables.

    Correct Answer(s)
    A. A specific error or any errors occurs.
    A. A database is shut down or started up.
    A. A specific user or any user logs on or off.
    A. A user executes a CREATE or an ALTER table statement
    Explanation
    A trigger can be fired when a specific error or any errors occur, when a database is shut down or started up, when a specific user or any user logs on or off, and when a user executes a CREATE or an ALTER table statement. These triggering events can activate a trigger and perform certain actions or operations based on the defined logic within the trigger.

    Rate this question:

  • 35. 

    You need to create a trigger on the EMP table that monitors every row that is changed and places this information into the AUDIT_TABLE. What type of trigger do you create?

    • FOR EACH ROW trigger on the EMP table.

    • Statement-level trigger on the EMP table.

    • FOR EACH ROW trigger on the AUDIT_TABLE table.

    • Statement-level trigger on the AUDIT_TABLE table.

    • FOR EACH ROW statement-level trigger on the EMP table.

    Correct Answer
    A. FOR EACH ROW trigger on the EMP table.
    Explanation
    The correct answer is a FOR EACH ROW trigger on the EMP table. This type of trigger is used to monitor every row that is changed in the EMP table and perform actions accordingly. It is specifically designed to capture and track changes at the row level.

    Rate this question:

  • 36. 

    Which two programming constructs can be grouped within a package? (Choose two)

    • Cursor

    • Constant

    • Trigger

    • Sequence

    • View

    Correct Answer(s)
    A. Cursor
    A. Constant
    Explanation
    The correct answer is Cursor and Constant. In programming, a package is a way to group related constructs together. Cursors are used to retrieve and manipulate data in a database, and constants are used to define values that do not change throughout the program. Both cursors and constants can be grouped within a package to organize and manage them effectively.

    Rate this question:

  • 37. 

    You have created a script file EMP_PROC.SQL that holds the text to create a procedure PROCESS_EMP. You have compiled the procedure for SQL Plus environment by running the script file EMP_PROC.SQL. What happens if there are syntax errors in the procedure PROCESS_EMP?

    • The errors are stored in the EMP_PROC.ERR file.

    • The errors are displayed to the screen when the script file is run.

    • The errors are stored in the procedure_errors data dictionary view.

    • YOU need to issue the SHOW ERRORS command in the SQL Plus environment to see the errors.

    • YOU need to issue the display errors command in the SQL Plus environment to see the errors.

    Correct Answer
    A. YOU need to issue the SHOW ERRORS command in the SQL Plus environment to see the errors.
    Explanation
    If there are syntax errors in the procedure PROCESS_EMP, the errors will not be displayed automatically. Instead, the user needs to manually issue the SHOW ERRORS command in the SQL Plus environment to see the errors. This command will display the syntax errors that occurred during the compilation of the procedure.

    Rate this question:

  • 38. 

    Which code successfully calculates tax?

    • CREATE OR REPLACE PROCEDURE calc (p_no IN NUMBER) RETURN tax IS V_sal NUMBER; Tax NUMBER; BEGIN SELECT sal INTO v_sal FROM emp WHERE EMPNO=p_no; Tax:=v_sal * 0. 05; END;

    • CREATE OR REPLACE FUNCTION calctax (p_no NUMBER) RETURN NUMBER IS V_sal NUMBER; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno =p_no; RETURN (v_sal* 0. 05); END;

    • CRETAE OR REPLACE FUNCTION calctax(p_no NUMBER) RETURN NUMBER IS V_sal NUMBER; 20 Tax NUMBER; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno =p_no; Tax:=v_sal * 0. 05; END;

    • CREATE OR REPLACE FUNCTION calctax(p_no NUMBER)IS V_sal NUMBER; Tax NUMBER; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno =p_no; Tax :=v_sal * 0. 05; RETURN(tax); END;

    Correct Answer
    A. CREATE OR REPLACE FUNCTION calctax (p_no NUMBER) RETURN NUMBER IS V_sal NUMBER; BEGIN SELECT sal INTO v_sal FROM emp WHERE empno =p_no; RETURN (v_sal* 0. 05); END;
    Explanation
    The given answer is the correct code for calculating tax because it defines a function named "calctax" that takes a parameter "p_no" of type NUMBER and returns a value of type NUMBER. Inside the function, it declares a variable "V_sal" of type NUMBER and assigns it the value of "sal" from the "emp" table where "empno" equals the input parameter "p_no". Finally, it returns the calculated tax value by multiplying "V_sal" by 0.05.

    Rate this question:

  • 39. 

    Given the header of a procedure ACCOUNT_TRANSACTION:CREATE OR REPLACE PROCEDURE ACCOUNT_TRANSACTION IS BEGIN END; Which command will execute the PROCEDURE ACCOUNT_TRANSACTION from the SQL Plus prompt?

    • ACCOUNT_TRANSACTION;

    • RUN ACCOUNT_TRANSACTION;

    • START ACCOUNT_TRANSACTION;

    • EXECUTE ACCOUNT_TRANSACTION;

    Correct Answer
    A. EXECUTE ACCOUNT_TRANSACTION;
    Explanation
    To execute the procedure ACCOUNT_TRANSACTION from the SQL Plus prompt, the correct command is EXECUTE ACCOUNT_TRANSACTION. This command will run the procedure and execute the code within the BEGIN and END blocks of the procedure.

    Rate this question:

  • 40. 

    Which one is the correct routine for the utilization order when using dynamic SQL?

    • Open, Parse, Bind, Execute, Fetch, Close

    • Parse, Bind, open, Execute, Close, Fetch

    • Bind, Open, Parse, Execute, Fetch, Close

    • Open, Bind, Parse, Execute, Close, Fetch

    Correct Answer
    A. Open, Parse, Bind, Execute, Fetch, Close
    Explanation
    The correct routine for the utilization order when using dynamic SQL is to first open the cursor, then parse the SQL statement, bind the variables, execute the statement, fetch the results, and finally close the cursor. This order ensures that the cursor is properly initialized and the SQL statement is correctly processed before executing and retrieving the results.

    Rate this question:

  • 41. 

    Examine this procedure: CREATE OR REPLACE PROCEDURE UPD_BAT_STAT (V_ID IN NUMBER DEFAULT 10, V_AB IN NUMBER DEFAULT 4) IS BEGIN UPDATE PLAYER_BAT_STAT SET AT_BATS = AT_BATS + V_AB WHERE PLAYER_ID = V_ID; COMMIT; END; Which two statements will successfully invoke this procedure in SQL *Plus? (Choose two)

    • EXECUTE UPD_BAT_STAT;

    • EXECUTE UPD_BAT_STAT(V_AB=>10, V_ID=>31);

    • EXECUTE UPD_BAT_STAT(31, 'FOUR', 'TWO');

    • UPD_BAT_STAT(V_AB=>10, V_ID=>31);

    • RUN UPD_BAT_STAT;

    Correct Answer(s)
    A. EXECUTE UPD_BAT_STAT;
    A. EXECUTE UPD_BAT_STAT(V_AB=>10, V_ID=>31);
    Explanation
    The correct answer is "EXECUTE UPD_BAT_STAT;" and "EXECUTE UPD_BAT_STAT(V_AB=>10, V_ID=>31);". These two statements will successfully invoke the procedure in SQL *Plus. The first statement invokes the procedure with the default values for V_ID and V_AB. The second statement invokes the procedure with specific values for V_ID and V_AB.

    Rate this question:

  • 42. 

    What can you do with the DBMS_LOB package?

    • Use the DBMS_LOB.WRITE procedure to write data to a BFILE.

    • Use the DBMS_LOB.BFILENAME function to locate an external BFILE.

    • Use the DBMS_LOB.FILEEXISTS function to find the location of a BFILE.

    • Use the DBMS_LOB.FILECLOSE procedure to close the file being accessed.

    Correct Answer
    A. Use the DBMS_LOB.FILECLOSE procedure to close the file being accessed.
    Explanation
    The DBMS_LOB package in a database management system (DBMS) allows users to manipulate large objects (LOBs) such as BFILEs. One of the functionalities provided by this package is the ability to close a file that is being accessed. This is done using the DBMS_LOB.FILECLOSE procedure. By closing the file, the user ensures that no further operations can be performed on it, preventing any potential issues or conflicts.

    Rate this question:

  • 43. 

    Which three are valid ways to minimize dependency failure? (Choose three)

    • Querying with the SELECT * notification.

    • Declaring variables with the %TYPE attribute.

    • Specifying schema names when referencing objects.

    • Declaring records by using the %ROWTYPE attribute.

    • Specifying package.procedure notation while executing procedures.

    Correct Answer(s)
    A. Querying with the SELECT * notification.
    A. Declaring variables with the %TYPE attribute.
    A. Declaring records by using the %ROWTYPE attribute.
    Explanation
    Specifying schema names when referencing objects helps to minimize dependency failure by ensuring that the correct object is referenced, even if there are multiple objects with the same name in different schemas. Querying with the SELECT * notification minimizes dependency failure by retrieving all columns from a table, ensuring that any changes to the table's structure are automatically reflected in the query. Declaring variables with the %TYPE attribute minimizes dependency failure by automatically adjusting the variable's data type if the referenced object's data type is changed. Declaring records by using the %ROWTYPE attribute minimizes dependency failure by automatically adjusting the record's structure if the referenced table's structure is changed.

    Rate this question:

  • 44. 

    Examine this code:CREATE OR REPLACE PACKAGE bonus IS g_max_bonus NUMBER := .99; FUNCTION calc_bonus (p_emp_id NUMBER) RETURN NUMBER; FUNCTION calc_salary (p_emp_id NUMBER) RETURN NUMBER; END; / CREATE OR REPLACE PACKAGE BODY bonus IS v_salary employees.salary%TYPE; v_bonus employees.commission_pct%TYPE; FUNCTION calc_bonus (p_emp_id NUMBER) RETURN NUMBER IS BEGIN SELECT salary, commission_pct INTO v_salary, v_bonus FROM employees WHERE employee_id = p_emp_id; RETURN v_bonus * v_salary; END calc_bonus FUNCTION calc_salary (p_emp_id NUMBER) RETURN NUMBER IS BEGIN SELECT salary, commission_pct INTO v_salary, v_bonus FROM employees WHERE employees RETURN v_bonus * v_salary + v_salary; END cacl_salary; END bonus; / Which statement is true?

    • You can call the BONUS.CALC_SALARY packaged function from an INSERT command against the EMPLOYEES table.

    • You can call the BONUS.CALC_SALARY packaged function from a SELECT command against 15 the EMPLOYEES table.

    • You can call the BONUS.CALC_SALARY packaged function form a DELETE command against the EMPLOYEES table.

    • You can call the BONUS.CALC_SALARY packaged function from an UPDATE command against the EMPLOYEES table.

    Correct Answer
    A. You can call the BONUS.CALC_SALARY packaged function from a SELECT command against 15 the EMPLOYEES table.
    Explanation
    The BONUS.CALC_SALARY packaged function can be called from a SELECT command against the EMPLOYEES table. This is because the CALC_SALARY function is defined within the bonus package and can be accessed and executed within a SQL statement.

    Rate this question:

  • 45. 

    Examine this code:CREATE OR REPLACE PRODECURE add_dept (p_dept_name VARCHAR2 DEFAULT .placeholder ., p_location VARCHAR2 DEFAULT .Boston .) IS BEGIN INSERT INTO departments VALUES (dept_id_seq.NEXTVAL, p_dept_name, p_location); END add_dept; / Which three are valid calls to the add_dep procedure ? (Choose three)

    • Add_dept;

    • Add_dept( .Accounting .);

    • Add_dept(, .New York .);

    • Add_dept(p_location=> .New York .);

    Correct Answer(s)
    A. Add_dept;
    A. Add_dept( .Accounting .);
    A. Add_dept(p_location=> .New York .);
    Explanation
    The code provided is a procedure called "add_dept" that takes two parameters: "p_dept_name" and "p_location". The procedure inserts a new row into the "departments" table with the values provided for "p_dept_name" and "p_location".

    The valid calls to the "add_dept" procedure are:

    1. add_dept; - This call uses the default values for both parameters.
    2. add_dept( .Accounting .); - This call provides a value for "p_dept_name" and uses the default value for "p_location".
    3. add_dept(p_location=> .New York .); - This call uses the default value for "p_dept_name" and provides a value for "p_location".

    These calls demonstrate different ways to provide values for the parameters of the "add_dept" procedure.

    Rate this question:

  • 46. 

    Which statement about the local dependent object is TRUE?

    • They are on different nodes.

    • They are in a different database.

    • They are on the same node in the same database.

    • They are on the same node in a different database.

    Correct Answer
    A. They are on the same node in the same database.
    Explanation
    The correct answer is that the local dependent object is on the same node in the same database. This means that the object is located within the same physical server and database as the object it depends on. This indicates a close relationship between the two objects, as they are both stored in the same location.

    Rate this question:

  • 47. 

    Local procedure A calls remote procedure B. Procedure B was compiled at 8 A.M. Procedure A was modified and recompiled at 9 A.M. Remote procedure B was later modified and recompiled at 11 A.M. The dependency mode is set to TI MESTAMP. What happens when procedure A is invoked at 1 P.M?

    • There is no effect on procedure A, and it runs successfully.

    • Procedure B is invalidated and recompiles when invoked.

    • Procedure A is invalidated and recompiles for the first time it is invoked.

    • Procedure A is invalidated and recompiles for the second time it is invoked.

    Correct Answer
    A. Procedure A is invalidated and recompiles for the second time it is invoked.
    Explanation
    When the dependency mode is set to TIMESTAMP, it means that the procedure's timestamp is checked to determine if it needs to be recompiled. In this scenario, procedure A was modified and recompiled at 9 A.M, and procedure B was modified and recompiled at 11 A.M. When procedure A is invoked at 1 P.M, its timestamp will be compared to the timestamp of procedure B, and since procedure B was recompiled after procedure A, procedure A will be invalidated and recompiled for the second time it is invoked.

    Rate this question:

  • 48. 

    Examine the trigger: CREATE OR REPLACE TRIGGER Emp_count AFTER DELETE ON Emp_tab FOR EACH ROW DELCARE n INTEGER; BEGIN SELECT COUNT(*) INTO n FROM Emp_tab; DMBS_OUTPUT.PUT_LINE( . There are now . || a || . employees, .); END; This trigger results in an error after this SQL statement is entered: DELETE FROM Emp_tab WHERE Empno = 7499; How do you correct the error?

    • Change the trigger type to a BEFORE DELETE.

    • Take out the COUNT function because it is not allowed in a trigger.

    • Remove the DBMS_OUTPUT statement because it is not allowed in a trigger.

    • Change the trigger to a statement-level trigger by removing FOR EACH ROW.

    Correct Answer
    A. Change the trigger to a statement-level trigger by removing FOR EACH ROW.
    Explanation
    The error in the trigger is caused by the presence of the "FOR EACH ROW" clause. This clause is used for row-level triggers, but in this case, the trigger should be a statement-level trigger. By removing the "FOR EACH ROW" clause, the trigger will be corrected and will no longer result in an error.

    Rate this question:

  • 49. 

    Examine this code: CREATE OR REPLACE PACKAGE comm_package IS g_comm NUMBER := 10; PROCEDURE reset_comm(p_comm IN NUMBER); END comm_package; / User Jones executes the following code at 9:01am: EXECUTE comm_package.g_comm := 15 User Smith executes the following code at 9:05am: EXECUTE comm_paclage.g_comm := 20 Which statement is true?

    • G_comm has a value of 15 at 9:06am for Smith.

    • G_comm has a value of 15 at 9:06am for Jones.

    • G_comm has a value of 20 at 9:06am for both Jones and Smith.

    • G_comm has a value of 15 at 9:03 am for both Jones and Smith.

    • G_comm has a value of 10 at 9:06am for both Jones and Smith.

    • G_comm has a value of 10 at 9:03am for both Jones and Smith

    Correct Answer
    A. G_comm has a value of 15 at 9:06am for Jones.
    Explanation
    At 9:01am, Jones executes the code "EXECUTE comm_package.g_comm := 15", which sets the value of g_comm to 15. Therefore, at 9:06am, g_comm will still have a value of 15 for Jones.

    Rate this question:

Quiz Review Timeline (Updated): Aug 28, 2023 +

Our quizzes are rigorously reviewed, monitored and continuously updated by our expert board to maintain accuracy, relevance, and timeliness.

  • Current Version
  • Aug 28, 2023
    Quiz Edited by
    ProProfs Editorial Team
  • Jan 21, 2013
    Quiz Created by
    Ranaguha
Back to Top Back to top
Advertisement