PLS-00382:表达式类型错误,PL / SQL:语句被忽略

时间:2015-01-20 12:09:34

标签: database oracle plsql functional-programming

我该怎么做才能运行这些脚本?

DECLARE
 DBlink varchar2(20);
 type array_t is varray(2) of varchar2(20);
   array array_t := array_t('T', 'RA') ;
   BEGIN
  FOR i in 1..array.count 
  LOOP
  DBlink := array_t(i) ;
      insert into Database_size_2 (DBNAME,date1,Dbsize)values(DBlink,sysdate,11 ) ;
    END LOOP ;
 END ;

第8行的错误: ORA-06550:第8行,第13栏: PLS-00382:表达式类型错误 ORA-06550:第8行,第3栏: PL / SQL:忽略语句

1 个答案:

答案 0 :(得分:2)

PL / SQL中有拼写错误。您使用的是实际类型array_t,而不是您在DECLARE块中定义的变量array

DECLARE
   DBlink varchar2(20);
   type array_t is varray(2) of varchar2(20);
   array array_t := array_t('T', 'RA') ;
BEGIN
   FOR i in 1..array.count 
   LOOP
      DBlink := array(i) ;
      insert into Database_size_2 (DBNAME,date1,Dbsize) values (DBlink,sysdate,11 ) ;
   END LOOP ;
END;

您实际上根本不需要变量DBLink,但可以直接使用数组条目:

DECLARE
   type array_t is varray(2) of varchar2(20);
   array array_t := array_t('T', 'RA') ;
BEGIN
   FOR i in 1..array.count 
   LOOP
      insert into Database_size_2 (DBNAME,date1,Dbsize) values (array(i),sysdate,11 ) ;
   END LOOP ;
END;