在 sql plus 中的脚本中运行循环
Posted
技术标签:
【中文标题】在 sql plus 中的脚本中运行循环【英文标题】:Running loop in script in sql plus 【发布时间】:2012-11-26 12:43:40 【问题描述】:我在 sql plus 中运行一个脚本,我的脚本中有一个 for 循环:
BEGIN
FOR count IN 1..100 LOOP
INSERT INTO CompanyShare VALUES (count, 1, 250);
END LOOP;
END;
BEGIN
FOR count IN 101..200 LOOP
INSERT INTO CompanyShare VALUES (count, 2, 50);
END LOOP;
END;
当我运行脚本时出现了这个错误:
ORA-06550:第 6 行,第 1 列:PLS-00103:遇到符号“BEGIN”
我哪里错了?
【问题讨论】:
您在第一个块的末尾错过了;
。而且我不会使用count
作为变量名,因为它是一个sql保留字。
已纠正但仍然给我同样的错误
如帕拉多所说,还添加一个/
。
【参考方案1】:
尝试在end;
之后添加/
,如下所示:
BEGIN
FOR count IN 1..100 LOOP
INSERT INTO CompanyShare VALUES (count, 1, 250);
END LOOP;
END;
/ --<-- Here
BEGIN
FOR count IN 101..200 LOOP
INSERT INTO CompanyShare VALUES (count, 2, 50);
END LOOP;
END;
【讨论】:
谢谢...现在我的脚本正在运行 很高兴能帮到你:)【参考方案2】:看看你的逻辑,你甚至可以根据条件简化脚本。
BEGIN
FOR count IN 1..200
LOOP
INSERT INTO CompanyShare VALUES (count
,CASE WHEN count<=100 THEN 1 ELSE 2 END
,CASE WHEN count<=100 THEN 250 ELSE 50 END
);
END LOOP;
END;
/
【讨论】:
【参考方案3】:结束后没有分号。试试这个
BEGIN
FOR count IN 1..100 LOOP
INSERT INTO CompanyShare VALUES (count, 1, 250);
END LOOP;
END ; --****
BEGIN
FOR count IN 101..200 LOOP
INSERT INTO CompanyShare VALUES (count, 2, 50);
END LOOP;
END;
【讨论】:
以上是关于在 sql plus 中的脚本中运行循环的主要内容,如果未能解决你的问题,请参考以下文章
如何忽略从 SQL Plus 运行的 SQL 脚本中的 & 符号?