Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 重复打开和关闭同一个游标。出现了什么错误?在预期以下情况之一时遇到了符号“文件结束”:begin function pragma Procedure,我正在处理的所有过程都出现了此错误,不知道该怎么办:(如果要在异常PL/SQL块中创建过程,则需要删除过程_Oracle_Plsql - Fatal编程技术网

Oracle 重复打开和关闭同一个游标。出现了什么错误?在预期以下情况之一时遇到了符号“文件结束”:begin function pragma Procedure,我正在处理的所有过程都出现了此错误,不知道该怎么办:(如果要在异常PL/SQL块中创建过程,则需要删除过程

Oracle 重复打开和关闭同一个游标。出现了什么错误?在预期以下情况之一时遇到了符号“文件结束”:begin function pragma Procedure,我正在处理的所有过程都出现了此错误,不知道该怎么办:(如果要在异常PL/SQL块中创建过程,则需要删除过程,oracle,plsql,Oracle,Plsql,重复打开和关闭同一个游标。出现了什么错误?在预期以下情况之一时遇到了符号“文件结束”:begin function pragma Procedure,我正在处理的所有过程都出现了此错误,不知道该怎么办:(如果要在异常PL/SQL块中创建过程,则需要删除过程的/结束;后的/。如果要创建独立过程,请参阅user76ponic的答案。您还有几个无效的select语句:例如从名称中选择名称或从surn中选择姓氏。)ame@如果您有一个名为name的表,该表包含一个名为name的列,则带有\u no\u


重复打开和关闭同一个游标。

出现了什么错误?在预期以下情况之一时遇到了符号“文件结束”:begin function pragma Procedure,我正在处理的所有过程都出现了此错误,不知道该怎么办:(如果要在异常PL/SQL块中创建过程,则需要删除过程的
/
结束;后的
/
。如果要创建独立过程,请参阅user76ponic的答案。您还有几个无效的select语句:例如
从名称中选择名称
从surn中选择姓氏。)ame
@如果您有一个名为
name
的表,该表包含一个名为
name
的列,则带有\u no\u name的\u horse\u
是有效的。将它们都称为同一事物不是特别好的做法,但它是有效的。您遇到了什么错误?遇到了符号“文件结束”当预期出现以下情况之一时:begin function pragma procedureand我正在处理的所有过程都会出现此错误,我不知道该怎么办:(如果要在异常PL/SQL块中创建过程,则需要删除过程的
/
结束;
后的
/
。如果要创建独立过程,请参阅user76ponic的答案。您还有几个无效的select语句:例如
从名称中选择名称
从surn中选择姓氏。)ame
@如果您有一个名为
name
的表,该表包含一个名为
name
的列,那么带有\u no\u name的\u horse\u
是有效的。将它们都称为同一事物不是特别好的做法,但它是有效的。该过程是在匿名PL/SQL块中声明的,而不是在SQL作用域so
CRE中声明的此处不需要ATE或REPLACE
。该过程是在匿名PL/SQL块中声明的,不在SQL范围内,因此此处不需要
创建或替换
。如果我在过程中声明变量,我必须这样声明:v_nr NUMBER(10);或仅v_nr NUMBER;
v_nr NUMBER(10)
或者这将允许您模拟
NOTE
表中
NR\u列
列的数据类型:
v\u NR NOTE.NR\u列%TYPE;
。如果我在过程中声明变量,我必须这样声明:v\u NR NUMBER(10);或者仅仅是v\u NR NUMBER;
v\u NR NUMBER(10)
或者这将允许您模拟
NOTE
表中
NR NOTE.NR\u列%TYPE;
NR\u列的数据类型。
DROP TABLE grade
/
CREATE TABLE grade (grade CHAR(2))
/
INSERT INTO grade VALUES ('A1');
INSERT INTO grade VALUES ('A2');
INSERT INTO grade VALUES ('A3');
INSERT INTO grade VALUES ('A4');
INSERT INTO grade VALUES ('A5');
INSERT INTO grade VALUES ('A6');
INSERT INTO grade VALUES ('A7');
INSERT INTO grade VALUES ('B1');
INSERT INTO grade VALUES ('B2');
INSERT INTO grade VALUES ('B3');
INSERT INTO grade VALUES ('B4');
INSERT INTO grade VALUES ('B5');
INSERT INTO grade VALUES ('B6');
INSERT INTO grade VALUES ('B7');
commit;

set serveroutput on
DECLARE
v_contor INTEGER := 1;
v_nr NUMBER(10);
v_name VARCHAR2(20);
v_surname VARCHAR2(20);
v_year NUMBER(2);
v_grade VARCHAR2(20);
v_scholarship NUMBER(4);
v_nota NUMBER(2);

PROCEDURE insert_data IS

cursor c1 is
   select name from(select name from name
              order by dbms_ryeardom.value)
   where rownum =1;

cursor c2 is
   select surname from(select surname from surname
              order by dbms_ryeardom.value)
   where rownum =1;

cursor c3 is 
   select grade from(select grade from grade
              order by dbms_ryeardom.value)
   where rownum =1;

BEGIN

   v_nr := 124;
   WHILE v_contor <= 2000 LOOP
        open c1;
        open c2;
    open c3;
    LOOP
        fetch c1 into v_name;
        exit when c1%notfound;
        END loop;
    LOOP
        fetch c2 into v_surname;
        exit when c2%notfound;
        END loop;
    LOOP
        fetch c3 into v_grade;
        exit when c3%notfound;
        END loop;
    v_year := round(dbms_ryeardom.value(1,3));
    v_scholarship := round(dbms_ryeardom.value(250,450));
    INSERT INTO studenti VALUES (v_nr, INITCAP(v_name), v_surname, v_year, v_grade, v_scholarship, NULL);
        IF (v_year = 2) THEN
            v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 21, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 22, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 23, v_nota, NULL);
    END if;
    IF (v_year = 3) THEN
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 21, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 22, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 23, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 24, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 25, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 26, v_nota, NULL);
        v_nota := round(dbms_ryeardom.value(4,10));
            INSERT INTO note VALUES (v_nr, 29, v_nota, NULL);
    END if;
        v_nr := v_nr + 1;
    v_contor := v_contor + 1;
    close c1;
    close c2;
    close c3;
    END loop;
END;
/
BEGIN
    insert_data;
END;
/
Create or replace procedure AS
procedure IS
v_contor INTEGER := 1;
v_nr NUMBER(10);
v_name VARCHAR2(20);
v_surname VARCHAR2(20);
v_year NUMBER(2);
v_grade VARCHAR2(20);
v_scholarship NUMBER(4);
v_nota NUMBER(2);
create or replace PROCEDURE insert_data AS

v_grade VARCHAR2;
v_scholarship NUMBER;
v_nota NUMBER;
....
END;
/
BEGIN
    insert_data;
END;
/
END;
/


BEGIN
    execute(insert_data);
END;
/
DECLARE
  ...
BEGIN
  ...
END;
/
PROCEDURE name IS ... BEGIN ... END;
CREATE [OR REPLACE] PROCEDURE name IS ... BEGIN ... END;
/