ALwaleed ALdajani
ALwaleed ALdajani

Reputation: 1

PLS-00382: expression is of wrong type ,PL/SQL: Statement ignored

what i do to run these script ?

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 ;

ERROR at line 8: ORA-06550: line 8, column 13: PLS-00382: expression is of wrong type ORA-06550: line 8, column 3: PL/SQL: Statement ignored

Upvotes: 0

Views: 4040

Answers (1)

gvenzl
gvenzl

Reputation: 1891

You have a typo in your PL/SQL. You are using the actual type array_t rather than the variable array that you have defined in your DECLARE block:

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;

You actually don't need the variable DBLink at all but can use the array entry directly:

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;

Upvotes: 2

Related Questions