千家信息网

2011-10-20 %TYPE的使用

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,http://www.itpub.net/thread-1499223-7-1.html65楼我创建了这些类型和表:CREATE TYPE plch_food_t AS OBJECT (name VA
千家信息网最后更新 2024年11月24日2011-10-20 %TYPE的使用

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

65楼

我创建了这些类型和表:

CREATE TYPE plch_food_t AS OBJECT (name VARCHAR2 (100));/ CREATE or replace TYPE plch_food_nt   IS TABLE OF VARCHAR2 (100)/ CREATE TABLE plch_food (name VARCHAR2 (100))/ CREATE OR REPLACE PACKAGE plch_pkgIS   TYPE food_rt IS RECORD (name VARCHAR2 (100));END;/

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

(A)

DECLARE   l_var   plch_food.name%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;/
SQL> DECLARE  2     l_var   plch_food.name%TYPE := 'Brussels Sprouts';  3  BEGIN  4     DBMS_OUTPUT.put_line (l_var);  5  END;  6  /Brussels SproutsPL/SQL procedure successfully completedSQL>


(B)

DECLARE   l_var   plch_food_nt%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;/
SQL> DECLARE  2     l_var   plch_food_nt%TYPE := 'Brussels Sprouts';  3  BEGIN  4     DBMS_OUTPUT.put_line (l_var);  5  END;  6  /DECLARE   l_var   plch_food_nt%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;ORA-06550: 第 2 行, 第 12 列: PLS-00206: %TYPE 必须用于变量, 列, 字段或属性, 而不是 'PLCH_FOOD_NT'ORA-06550: 第 2 行, 第 12 列: PL/SQL: Item ignoredORA-06550: 第 4 行, 第 26 列: PLS-00320: 此表达式的类型声明不完整或格式不正确ORA-06550: 第 4 行, 第 4 列: PL/SQL: Statement ignoredSQL>


(C)

DECLARE   l_var   plch_food_t.name%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;/
SQL> DECLARE  2     l_var   plch_food_t.name%TYPE := 'Brussels Sprouts';  3  BEGIN  4     DBMS_OUTPUT.put_line (l_var);  5  END;  6  /DECLARE   l_var   plch_food_t.name%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;ORA-06550: 第 2 行, 第 12 列: PLS-00206: %TYPE 必须用于变量, 列, 字段或属性, 而不是 'PLCH_FOOD_T.NAME'ORA-06550: 第 2 行, 第 12 列: PL/SQL: Item ignoredORA-06550: 第 4 行, 第 26 列: PLS-00320: 此表达式的类型声明不完整或格式不正确ORA-06550: 第 4 行, 第 4 列: PL/SQL: Statement ignoredSQL>


(D)

DECLARE   l_var   plch_pkg.food_rt.name%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;/
SQL> DECLARE  2     l_var   plch_pkg.food_rt.name%TYPE := 'Brussels Sprouts';  3  BEGIN  4     DBMS_OUTPUT.put_line (l_var);  5  END;  6  /DECLARE   l_var   plch_pkg.food_rt.name%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;ORA-06550: 第 2 行, 第 12 列: PLS-00206: %TYPE 必须用于变量, 列, 字段或属性, 而不是 'PLCH_PKG.FOOD_RT.NAME'ORA-06550: 第 2 行, 第 12 列: PL/SQL: Item ignoredORA-06550: 第 4 行, 第 26 列: PLS-00320: 此表达式的类型声明不完整或格式不正确ORA-06550: 第 4 行, 第 4 列: PL/SQL: Statement ignoredSQL>


答案A

答案说明70楼

2011-10-20 答案 AD为什么不行?你不能对记录类型直接使用%TYPE, 必须先声明一个基于该记录类型的变量,然后对这个变量使用%TYPE:
DECLARE   l_food   plch_pkg.food_rt;   l_var    l_food.name%TYPE := 'Brussels Sprouts';BEGIN   DBMS_OUTPUT.put_line (l_var);END;/
SQL> DECLARE  2     l_food   plch_pkg.food_rt;  3     l_var    l_food.name%TYPE := 'Brussels Sprouts';  4  BEGIN  5     DBMS_OUTPUT.put_line (l_var);  6  END;  7  /Brussels SproutsPL/SQL procedure successfully completedSQL>
0