Declaration and use of 2011-11-16% ROWTYPE
Http://www.itpub.net/thread-1499223-15-1.html
150 floor
I connected to the HR user and ran the following statement:
CREATE TABLE plch_parts (partnum NUMBER, partname VARCHAR2 (50)) / BEGIN INSERT INTO plch_parts VALUES (1, 'Chassis'); COMMIT;END;/CREATE OR REPLACE PACKAGE plch_pkgIS TYPE parts_t IS TABLE OF plch_parts%ROWTYPE INDEX BY PLS_INTEGER; PROCEDURE plch_show_parts (parts_in IN parts_t); END / CREATE OR REPLACE PACKAGE BODY plch_pkgIS PROCEDURE plch_show_parts (parts_in IN parts_t) IS BEGIN FOR indx IN 1.. Parts_in.COUNT LOOP DBMS_OUTPUT.put_line (parts_in (indx) .partname); END LOOP; END;END;/GRANT SELECT ON plch_parts TO scott/GRANT EXECUTE ON plch_pkg TO scott/
Then I connected with the SCOTT user and created this table:
CREATE TABLE plch_parts (partnum NUMBER, partname VARCHAR2 (50)) / BEGIN INSERT INTO plch_parts VALUES (100,' Wheel'); COMMIT;END;/
Which of the following options contains a declarative portion of the following statement block so that "Wheel" is displayed after the block is executed?
BEGIN SELECT * BULK COLLECT INTO l_parts FROM plch_parts; hr.plch_pkg.plch_show_parts (l_parts); END
(A)
DECLARE TYPE parts_t IS TABLE OF plch_parts%ROWTYPE INDEX BY PLS_INTEGER; l_parts parts_t;SQL > DECLARE 2 TYPE parts_t IS TABLE OF plch_parts%ROWTYPE INDEX BY PLS_INTEGER; 3 4 l_parts parts_t; 5 6 BEGIN 7 SELECT * BULK COLLECT INTO l_parts FROM plch_parts; 8 9 yoga.plch_pkg.plch_show_parts (l_parts); 10 END 11 / DECLARE TYPE parts_t IS TABLE OF plch_parts%ROWTYPE INDEX BY PLS_INTEGER; l_parts parts_t;BEGIN SELECT * BULK COLLECT INTO l_parts FROM plch_parts; yoga.plch_pkg.plch_show_parts (l_parts); END;ORA-06550: line 9, column 3: PLS-00306: incorrect number or type of parameters when calling 'PLCH_SHOW_PARTS' ORA-06550: line 9, column 3: PL/SQL: Statement ignoredSQL >
(B)
DECLARE TYPE parts_t IS TABLE OF hr.plch_parts%ROWTYPE INDEX BY PLS_INTEGER; l_parts parts_t;SQL > DECLARE 2 TYPE parts_t IS TABLE OF yoga.plch_parts%ROWTYPE INDEX BY PLS_INTEGER; 3 4 l_parts parts_t; 5 6 BEGIN 7 SELECT * BULK COLLECT INTO l_parts FROM plch_parts; 8 9 yoga.plch_pkg.plch_show_parts (l_parts); 10 END 11 / DECLARE TYPE parts_t IS TABLE OF yoga.plch_parts%ROWTYPE INDEX BY PLS_INTEGER; l_parts parts_t;BEGIN SELECT * BULK COLLECT INTO l_parts FROM plch_parts; yoga.plch_pkg.plch_show_parts (l_parts); END;ORA-06550: line 9, column 3: PLS-00306: incorrect number or type of parameters when calling 'PLCH_SHOW_PARTS' ORA-06550: line 9, column 3: PL/SQL: Statement ignoredSQL >
(C)
DECLARE l_parts hr.plch_pkg.parts_t;SQL > DECLARE 2 l_parts yoga.plch_pkg.parts_t; 3 4 BEGIN 5 SELECT * BULK COLLECT INTO l_parts FROM plch_parts; 6 7 yoga.plch_pkg.plch_show_parts (l_parts); 8 END; 9 / WheelPL/SQL procedure successfully completedSQL >
(D)
DECLARE SUBTYPE parts_t IS hr.plch_pkg.parts_t; l_parts parts_t;SQL > DECLARE 2 SUBTYPE parts_t IS yoga.plch_pkg.parts_t; 3 l_parts parts_t; 4 5 BEGIN 6 SELECT * BULK COLLECT INTO l_parts FROM plch_parts; 7 8 yoga.plch_pkg.plch_show_parts (l_parts); 9 END; 10 / WheelPL/SQL procedure successfully completedSQL >
Using yoga instead of hr,test instead of scott in actual measurement
The answer is on the 158th floor.
2011-11-16 answer CD.
% ROWTYPE is a record. If you define two record types with exactly the same structure, they are still not interchangeable and will report a type mismatch.