Beruflich Dokumente
Kultur Dokumente
DECLARE
v_Student students%ROWTYPE;
v_StudentCur NativeDynamic.t_RefCur;
BEGIN
-- Call StudentsQuery to open the cursor for students with
-- even IDs.
v_StudentCur :=
NativeDynamic.StudentsQuery('WHERE MOD(id, 2) = 0');
-- Loop through the opened cursor, and print out the results.
DBMS_OUTPUT.PUT_LINE('The following students have even IDs:');
Dynamic SQL 1
LOOP
FETCH v_StudentCur INTO v_Student;
EXIT WHEN v_StudentCur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(' ' || v_Student.id || ': ' ||
v_Student.first_name || ' ' ||
v_Student.last_name);
END LOOP;
CLOSE v_StudentCur;
-- Loop through the opened cursor, and print out the results.
DBMS_OUTPUT.PUT_LINE('The following students are music majors:');
LOOP
FETCH v_StudentCur INTO v_Student;
EXIT WHEN v_StudentCur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE(' ' || v_Student.id || ': ' ||
v_Student.first_name || ' ' ||v_Student.last_name);
END LOOP;
CLOSE v_StudentCur;
END;
/
------------------------------------------------------------------------------------------------------------------------
-- This block illustrates the use of EXECUTE IMMEDIATE for
-- single-row queries.
DECLARE
v_SQLQuery VARCHAR2(200);
v_Class classes%ROWTYPE;
v_Description classes.description%TYPE;
BEGIN
-- First select into a single variable.
v_SQLQuery :=
'SELECT description ' ||
' FROM classes ' ||
' WHERE department = ''ECN''' ||
' AND course = 203';
Dynamic SQL 2
DECLARE
v_SQLString VARCHAR2(200);
v_PLSQLBlock VARCHAR2(200);
BEGIN
-- First create a temporary table, using a literal. Note that
-- there is no trailing semicolon in the string.
EXECUTE IMMEDIATE
'CREATE TABLE execute_table (col1 VARCHAR(10))';
-- Update the number of students for the class, using an anonymous PL/SQL block.
v_PLSQLBlock :=
'BEGIN
UPDATE classes SET current_students = current_students + 1 WHERE department = :d and course = :c;
END;';
EXECUTE IMMEDIATE v_PLSQLBlock USING 'ECN', 103;
END LOOP;
END;
------------------------------------------------------------------------------------------------------------------------
Dynamic SQL 3