Oracle 编译过程时出错
我在过程中声明了一个数组。当我编写create或replace过程myprocedure时,它会被编译,但当我编写过程myprocedure时,它会给出以下错误。我不熟悉这个程序。请帮忙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;
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.