我用了甲骨文
我想声明一个允许我在表中插入的过程。
我尝试使用这段代码,但没有成功。
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发布于 2015-10-12 14:49:34
您的代码存在多个问题:
在Oracle中没有这样的数据类型称为“字符变化”。对于字符串,您将使用VARCHAR2。但是,由于您希望稍后在循环中使用它进行迭代,所以您需要它是NUMBER。
您需要从1循环到边界。
不需要。
修改程序如下:
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;
/无论如何,整个过程可以在一个插入SQL中完成。它被称为行生成器方法。
试试看
INSERT INTO mytabletest
SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 100;在上面,您可以使用您选择的值来代替100,该值是在上面的过程中作为参数**nbrStep **传递的值。
发布于 2015-10-12 14:49:02
输入变量的奇怪语法。更正为甲骨文-
CREATE OR REPLACE PROCEDURE addstep(nbrstep IN NUMBER)
IS
BEGIN
FOR i IN 0.. nbrstep
LOOP
INSERT INTO mytabletest
VALUES (i);
END LOOP;
END;https://stackoverflow.com/questions/33083489
复制相似问题