2015-12-22 48 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