2015-12-22 19 views
0

我是Oracle sql的新手。我从网上的一段代码,并将其粘贴到sqlfiddle(http://sqlfiddle.com/):如何在SQLFiddle中运行Oracle

对于该模式,我创建了一个临时表,这将在SQL查询中使用:

CREATE Global Temporary TABLE temp 
(id number 
,x number) 
,y CHAR(50)) 
ON COMMIT DELETE ROWS; 

我点击构建模式,它告诉我“架构就绪”。

然后我粘贴以下查询是从Oracle官方网站上的右窗格中:

-- available online in file 'sample1' 
DECLARE 
    x NUMBER := 100; 
BEGIN 
    FOR i IN 1..10 LOOP 
     IF MOD(i,2) = 0 THEN  -- i is even 
     INSERT INTO temp VALUES (i, x, 'i is even'); 
     ELSE 
     INSERT INTO temp VALUES (i, x, 'i is odd'); 
     END IF; 
     x := x + 100; 
    END LOOP; 
    COMMIT; 
END; 

当我按运行SQL,它会返回错误:

ORA-06550:行3,第18列:PLS-00103:遇到符号 “文件结束”时,期待以下某项操作:* & = - +; < /> at in是mod余数不是rem <>或者= =或= => = < = <>和或者像like2 like4 likec之间。多集成员 SUBMULTISET

回答

2

您需要更改默认查询终止([;])某事物别人比;,你可能需要添加的代码块之间的分隔符和新行:

enter image description here

SqlFiddleDemo

What's up with that [ ; ] button under each panel?

这个不起眼的小按钮确定在每个面板的查询怎么弄打散它们被发送之前关闭数据库。 此按钮弹出打开一个下拉列表,其中列出了不同的“查询 终止符”。查询终止符用作一个标志来指示(当 出现在行尾)当前语句已结束。 终止符不会被发送到数据库;相反,它只是 idicates我应该如何解析文本,然后再执行查询。

通常,您不需要触摸此按钮;该功能的主要价值在于定义存储过程的 。这是因为在存储过程的主体定义中经常出现 ,所以您可能想要用分号结束 行(这通常是这种情况)。由于我的默认查询 终止符也是分号,所以我没有明显的方法可以看到 您的存储过程的分号实际上并不是 查询的末尾。留下分号终止符,我会将程序定义分解为不正确的部分,并且错误肯定会导致 结果。将查询终结符更改为 分号以外的内容可以避免此问题。

+0

这个例子中,你能描述一下你从和改变呢?以及如何改变它?只需单击该链接并不告诉我需要更改什么... – DaveyDaveDave

+0

非常感谢lad2025。这真的对我有所帮助,因为你知道在编程的开始阶段,一切错误都会让事情变得糟糕,并且无法解决它。 – user1816353

+0

@ user1816353不要忘记[接受我的回答](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235):),祝你好运与学习'PL/SQL' – lad2025