程序在oracle中使用循环

时间:2015-10-12 14:19:45

标签: sql oracle plsql sqldatatypes

我用过oracle

我想声明一个允许我在表格中插入的程序

我尝试使用此代码

 CREATE OR REPLACE PROCEDURE ADDSTEP(nbrStep character varying)
is
i integer :=0;

BEGIN
      FOR i IN 0..nbrStep LOOP
       INSERT INTO mytabletest
       VALUES (i);
    END LOOP;
    END;

我有这个错误:

PROCEDURE ADDSTEP compiled
Errors: check compiler log

2 个答案:

答案 0 :(得分:1)

您的代码存在多个问题:

  1.   

    nbrStep字符变化

  2. 没有这样的数据类型称为" 字符变化"在Oracle中对于字符串,您可以使用 VARCHAR2 。但是,由于您希望稍后在循环中使用它进行迭代,因此您需要 NUMBER

    1.   

      FOR i IN 0..nbrStep LOOP

    2. 你需要从1迭代到边界。

      1.   

        i integer:= 0;

      2. 不需要。

        将程序修改为:

        CREATE OR REPLACE PROCEDURE ADDSTEP(nbrStep NUMBER)
        is
        i integer :=0;
        
        BEGIN
              FOR i IN 0..nbrStep LOOP
               INSERT INTO mytabletest
               VALUES (i);
            END LOOP;
            END;
        /
        

        无论如何,您可以在一个 INSERT SQL 中完成整个过程。它被称为行生成器方法。

        尝试,

        INSERT INTO mytabletest 
           SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 100;
        

        在上面,代替100,您可以使用您选择的值,即您在上述过程中作为参数** nbrStep **传递的值。

答案 1 :(得分:0)

输入变量的奇怪语法。更正了Oracle -

CREATE OR REPLACE PROCEDURE addstep(nbrstep IN NUMBER)
IS
BEGIN
   FOR i IN 0.. nbrstep
   LOOP
      INSERT INTO mytabletest
      VALUES (i);
   END LOOP;
END;