如何在SQLFiddle中运行Oracle

时间:2015-12-22 17:16:16

标签: oracle sqlfiddle

我是Oracle sql的新手。我从网上获得了一段代码,并将其粘贴到sqlfiddle(http://sqlfiddle.com/):

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

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

我点击了构建架构,它告诉我“Schema Ready”。

然后我在右侧窗格中粘贴以下来自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 mod not rem<>或!=或〜=> =< =   <>和/或喜欢像||之间的喜欢4喜欢multiset成员   SUBMULTISET

1 个答案:

答案 0 :(得分:3)

您需要将默认查询终止符( [;] )更改为除;之外的其他内容,您可能需要在代码块之间添加此分隔符和新行:

enter image description here

SqlFiddleDemo

  

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

     

这个模糊的小按钮确定每个面板中的查询在发送到数据库之前如何分解。   此按钮弹出一个下拉列表,列出不同的&#34;查询   终止子&#34。查询终止符用作标志来指示(何时   出现在一行的末尾)当前的声明已经结束。   终结符不会被发送到数据库;相反,它只是   在执行查询之前,我应该如何解析文本。

     

通常情况下,您不需要触摸此按钮;这个功能的主要价值在于    定义存储过程。这是因为经常出现这种情况   在存储过程的正文定义中,您可能希望结束a   用分号排列(通常是这种情况)。由于我的默认查询   终结者也是一个分号,没有明显的方式让我看到   您的存储过程的分号实际上并不是结束   查询。留下分号终止符,我会打破你的   程序定义成不正确的部分,肯定会出错   结果。将查询终止符更改为除。之外的其他内容   分号可以避免这个问题。