Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 编译过程时出错_Oracle_Stored Procedures_Plsql - Fatal编程技术网

Oracle 编译过程时出错

Oracle 编译过程时出错,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我在过程中声明了一个数组。当我编写create或replace过程myprocedure时,它会被编译,但当我编写过程myprocedure时,它会给出以下错误。我不熟悉这个程序。请帮忙 PROCEDURE myprocedure IS type namesarray IS VARRAY(5) OF VARCHAR2(10); type grades IS VARRAY(5) OF INTEGER; names namesarray; marks grades;

我在过程中声明了一个数组。当我编写create或replace过程myprocedure时,它会被编译,但当我编写过程myprocedure时,它会给出以下错误。我不熟悉这个程序。请帮忙

PROCEDURE myprocedure
IS

   type namesarray IS VARRAY(5) OF VARCHAR2(10); 
   type grades IS VARRAY(5) OF INTEGER; 
   names namesarray; 
   marks grades;
   total integer; 
BEGIN 
   names := namesarray('Kavita', 'Pritam', 'Ayan', 'Rishav', 'Aziz'); 
   marks:= grades(98, 97, 78, 87, 92); 
   total := names.count; 
   dbms_output.put_line('Total '|| total || ' Students'); 
   FOR i in 1 .. total LOOP 
      dbms_output.put_line('Student: ' || names(i) || ' 
      Marks: ' || marks(i)); 
   END LOOP; 
END;
错误 写程序myprocedure它给出了以下错误。我必须保留 这是在pl sql包中实现的

这是一个适合我的包:

CREATE OR REPLACE PACKAGE my_test
AS
   PROCEDURE myprocedure;
END;
/
CREATE OR REPLACE PACKAGE BODY my_test
AS
   PROCEDURE myprocedure
   IS
      TYPE namesarray IS VARRAY (5) OF VARCHAR2 (10);

      TYPE grades IS VARRAY (5) OF INTEGER;

      names   namesarray;
      marks   grades;
      total   INTEGER;
   BEGIN
      names :=
         namesarray ('Kavita',
                     'Pritam',
                     'Ayan',
                     'Rishav',
                     'Aziz');
      marks :=
         grades (98,
                 97,
                 78,
                 87,
                 92);

      --total := names.COUNT;
      DBMS_OUTPUT.put_line ('Total ' || names.COUNT || ' Students');

      FOR i IN 1 .. names.COUNT
      LOOP
         DBMS_OUTPUT.put_line (
            'Student: ' || names (i) || '  Marks: ' || marks (i));
      END LOOP;
   END;
END;
执行:

SQL> EXEC my_test.MYPROCEDURE;
Total 5 Students
Student: Kavita  Marks: 98
Student: Pritam  Marks: 97
Student: Ayan  Marks: 78
Student: Rishav  Marks: 87
Student: Aziz  Marks: 92

PL/SQL procedure successfully completed.

直接编译-
过程myprocedure is
不是有效的语句。您只能在
包体中以这种方式编写
SQL> EXEC my_test.MYPROCEDURE;
Total 5 Students
Student: Kavita  Marks: 98
Student: Pritam  Marks: 97
Student: Ayan  Marks: 78
Student: Rishav  Marks: 87
Student: Aziz  Marks: 92

PL/SQL procedure successfully completed.