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

65楼

我创建了这些类型和表:

CREATETYPEplch_food_tASOBJECT(nameVARCHAR2(100));/CREATEorreplaceTYPEplch_food_ntISTABLEOFVARCHAR2(100)/CREATETABLEplch_food(nameVARCHAR2(100))/CREATEORREPLACEPACKAGEplch_pkgISTYPEfood_rtISRECORD(nameVARCHAR2(100));END;/

下面的哪些选项在执行之后将会显示"Brussels Sprouts"?

(A)

DECLAREl_varplch_food.name%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;/

SQL>DECLARE2l_varplch_food.name%TYPE:='BrusselsSprouts';3BEGIN4DBMS_OUTPUT.put_line(l_var);5END;6/BrusselsSproutsPL/SQLproceduresuccessfullycompletedSQL>


(B)

DECLAREl_varplch_food_nt%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;/

SQL>DECLARE2l_varplch_food_nt%TYPE:='BrusselsSprouts';3BEGIN4DBMS_OUTPUT.put_line(l_var);5END;6/DECLAREl_varplch_food_nt%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;ORA-06550:第2行,第12列:PLS-00206:%TYPE必须用于变量,列,字段或属性,而不是'PLCH_FOOD_NT'ORA-06550:第2行,第12列:PL/SQL:ItemignoredORA-06550:第4行,第26列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第4行,第4列:PL/SQL:StatementignoredSQL>


(C)

DECLAREl_varplch_food_t.name%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;/

SQL>DECLARE2l_varplch_food_t.name%TYPE:='BrusselsSprouts';3BEGIN4DBMS_OUTPUT.put_line(l_var);5END;6/DECLAREl_varplch_food_t.name%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;ORA-06550:第2行,第12列:PLS-00206:%TYPE必须用于变量,列,字段或属性,而不是'PLCH_FOOD_T.NAME'ORA-06550:第2行,第12列:PL/SQL:ItemignoredORA-06550:第4行,第26列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第4行,第4列:PL/SQL:StatementignoredSQL>


(D)

DECLAREl_varplch_pkg.food_rt.name%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;/

SQL>DECLARE2l_varplch_pkg.food_rt.name%TYPE:='BrusselsSprouts';3BEGIN4DBMS_OUTPUT.put_line(l_var);5END;6/DECLAREl_varplch_pkg.food_rt.name%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;ORA-06550:第2行,第12列:PLS-00206:%TYPE必须用于变量,列,字段或属性,而不是'PLCH_PKG.FOOD_RT.NAME'ORA-06550:第2行,第12列:PL/SQL:ItemignoredORA-06550:第4行,第26列:PLS-00320:此表达式的类型声明不完整或格式不正确ORA-06550:第4行,第4列:PL/SQL:StatementignoredSQL>


答案A

答案说明70楼

2011-10-20答案AD为什么不行?你不能对记录类型直接使用%TYPE,必须先声明一个基于该记录类型的变量,然后对这个变量使用%TYPE:

DECLAREl_foodplch_pkg.food_rt;l_varl_food.name%TYPE:='BrusselsSprouts';BEGINDBMS_OUTPUT.put_line(l_var);END;/

SQL>DECLARE2l_foodplch_pkg.food_rt;3l_varl_food.name%TYPE:='BrusselsSprouts';4BEGIN5DBMS_OUTPUT.put_line(l_var);6END;7/BrusselsSproutsPL/SQLproceduresuccessfullycompletedSQL>