http://www.itpub.net/thread-1499223-15-1.html

150楼

我连接到HR用户并运行了如下语句:

CREATETABLEplch_parts(partnumNUMBER,partnameVARCHAR2(50))/BEGININSERTINTOplch_partsVALUES(1,'Chassis');COMMIT;END;/CREATEORREPLACEPACKAGEplch_pkgISTYPEparts_tISTABLEOFplch_parts%ROWTYPEINDEXBYPLS_INTEGER;PROCEDUREplch_show_parts(parts_inINparts_t);END;/CREATEORREPLACEPACKAGEBODYplch_pkgISPROCEDUREplch_show_parts(parts_inINparts_t)ISBEGINFORindxIN1..parts_in.COUNTLOOPDBMS_OUTPUT.put_line(parts_in(indx).partname);ENDLOOP;END;END;/GRANTSELECTONplch_partsTOscott/GRANTEXECUTEONplch_pkgTOscott/

然后我又用SCOTT用户连接并创建了这张表:

CREATETABLEplch_parts(partnumNUMBER,partnameVARCHAR2(50))/BEGININSERTINTOplch_partsVALUES(100,'Wheel');COMMIT;END;/

下列的哪些选项包含了下列语句块的一个声明部分,从而使得这个块执行之后"Wheel"会被显示出来?

BEGINSELECT*BULKCOLLECTINTOl_partsFROMplch_parts;hr.plch_pkg.plch_show_parts(l_parts);END;

(A)

DECLARETYPEparts_tISTABLEOFplch_parts%ROWTYPEINDEXBYPLS_INTEGER;l_partsparts_t;

SQL>DECLARE2TYPEparts_tISTABLEOFplch_parts%ROWTYPEINDEXBYPLS_INTEGER;34l_partsparts_t;56BEGIN7SELECT*BULKCOLLECTINTOl_partsFROMplch_parts;89yoga.plch_pkg.plch_show_parts(l_parts);10END;11/DECLARETYPEparts_tISTABLEOFplch_parts%ROWTYPEINDEXBYPLS_INTEGER;l_partsparts_t;BEGINSELECT*BULKCOLLECTINTOl_partsFROMplch_parts;yoga.plch_pkg.plch_show_parts(l_parts);END;ORA-06550:第9行,第3列:PLS-00306:调用'PLCH_SHOW_PARTS'时参数个数或类型错误ORA-06550:第9行,第3列:PL/SQL:StatementignoredSQL>

(B)

DECLARETYPEparts_tISTABLEOFhr.plch_parts%ROWTYPEINDEXBYPLS_INTEGER;l_partsparts_t;

SQL>DECLARE2TYPEparts_tISTABLEOFyoga.plch_parts%ROWTYPEINDEXBYPLS_INTEGER;34l_partsparts_t;56BEGIN7SELECT*BULKCOLLECTINTOl_partsFROMplch_parts;89yoga.plch_pkg.plch_show_parts(l_parts);10END;11/DECLARETYPEparts_tISTABLEOFyoga.plch_parts%ROWTYPEINDEXBYPLS_INTEGER;l_partsparts_t;BEGINSELECT*BULKCOLLECTINTOl_partsFROMplch_parts;yoga.plch_pkg.plch_show_parts(l_parts);END;ORA-06550:第9行,第3列:PLS-00306:调用'PLCH_SHOW_PARTS'时参数个数或类型错误ORA-06550:第9行,第3列:PL/SQL:StatementignoredSQL>

(C)

DECLAREl_partshr.plch_pkg.parts_t;

SQL>DECLARE2l_partsyoga.plch_pkg.parts_t;34BEGIN5SELECT*BULKCOLLECTINTOl_partsFROMplch_parts;67yoga.plch_pkg.plch_show_parts(l_parts);8END;9/WheelPL/SQLproceduresuccessfullycompletedSQL>

(D)

DECLARESUBTYPEparts_tIShr.plch_pkg.parts_t;l_partsparts_t;

SQL>DECLARE2SUBTYPEparts_tISyoga.plch_pkg.parts_t;3l_partsparts_t;45BEGIN6SELECT*BULKCOLLECTINTOl_partsFROMplch_parts;78yoga.plch_pkg.plch_show_parts(l_parts);9END;10/WheelPL/SQLproceduresuccessfullycompletedSQL>

实测用yoga代替hr,test代替scott

答案在158楼

2011-11-16 答案CD.

%ROWTYPE是一种记录,如果你定义两个结构一模一样的记录类型,它们仍然不能够互换,会报类型不匹配的错误。