首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >oracle中使用循环的过程

oracle中使用循环的过程
EN

Stack Overflow用户
提问于 2015-10-12 14:19:44
回答 2查看 8.1K关注 0票数 1

我用了甲骨文

我想声明一个允许我在表中插入的过程。

我尝试使用这段代码,但没有成功。

代码语言:javascript
复制
 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;

我有一个错误:

代码语言:javascript
复制
PROCEDURE ADDSTEP compiled
Errors: check compiler log
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-12 14:49:34

您的代码存在多个问题:

  1. nbrStep字符变化

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

  1. 用于0..nbrStep循环中的I

您需要从1循环到边界。

  1. I整数:=0;

不需要。

修改程序如下:

代码语言:javascript
复制
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中完成。它被称为行生成器方法。

试试看

代码语言:javascript
复制
INSERT INTO mytabletest 
   SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= 100;

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

票数 1
EN

Stack Overflow用户

发布于 2015-10-12 14:49:02

输入变量的奇怪语法。更正为甲骨文-

代码语言:javascript
复制
CREATE OR REPLACE PROCEDURE addstep(nbrstep IN NUMBER)
IS
BEGIN
   FOR i IN 0.. nbrstep
   LOOP
      INSERT INTO mytabletest
      VALUES (i);
   END LOOP;
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33083489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档