我用过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
答案 0 :(得分:1)
您的代码存在多个问题:
nbrStep字符变化
没有这样的数据类型称为" 字符变化"在Oracle中对于字符串,您可以使用 VARCHAR2 。但是,由于您希望稍后在循环中使用它进行迭代,因此您需要 NUMBER 。
FOR i IN 0..nbrStep LOOP
你需要从1迭代到边界。
i integer:= 0;
不需要。
将程序修改为:
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;