2013-01-15 34 views
-1

我嘗試寫在PL/SQL 查詢我知道它應該在這個順序查詢在PL/SQL

DECLARE 。 。 BEGIN 。 。 END 。 RUN;

我這樣做,但我在結束後得到一個奇怪的問題。甲骨文標記的點下紅線和單詞「結束」的結束,當我把我的鼠標線好說 「語法錯誤,預期: 標識 名 name_wo_function_call」

這是我的代碼

DECLARE 
      temp_m model.model%TYPE; 
      temp_mn model.modelnum%TYPE; 
      temp_cap model.capacity%TYPE; 
      temp_we model.weight%TYPE; 
      CURSOR temp IS SELECT * FROM model WHERE (weight>40) FOR UPDATE; 
      CURSOR temp2 IS SELECT model_num,COUNT(id) 
              FROM TECH_MO 
              GROUP BY model_num 
              HAVING COUNT(id)>1; 
BEGIN 
      OPEN temp; 
      OPEN temp2; 
      LOOP 
       FETCH temp INTO temp_m,temp_mn,temp_cap,temp_we; 
       dbms_output.put_line(temp_m); 
       EXIT WHEN temp%notfound; 
      END LOOP; 
      CLOSE temp; 
      CLOSE temp2; 
END; 
. 
RUN; 

謝謝你的回答。

+1

你從哪裏找到你需要的「RUN」? Oracle匿名塊的一般語法是'[declare] begin ... [exception] ... end;'。 – a1ex07

+1

你在用什麼IDE?您可能想要將匿名塊作爲腳本運行,並刪除該腳本。和RUN;部分。在Toad中,以腳本運行是帶有閃電的頁面的圖標。 – tbone

+0

當我刪除「.run;」其稱「匿名塊完成」,但我想看到「dbms_output.put_line(temp_m);」的結果爲什麼我看不到?我在哪裏使用「.run」? –

回答

1

不知道從哪裏得到.RUN,因爲這不是語法的一部分。在腳本中這樣做的方式就是這樣。

DECLARE 
    ... 
BEGIN 
    ... 
EXCEPTION 
    ... 
END; 
/

(唯一的例外部分是可選的)

您有關於沒有看到我懷疑輸出的問題是因爲你還沒有設置服務器的輸出。你在SQL * Plus中這樣做。

SET SERVEROUTPUT ON 
+0

當我把「/」它顯示我輸入,而不使用「set serveroutput on」,但是當我把「set serveroutput on」標記在「serveroutput」中的「ser」下面的紅色線條上,當我把鼠標放到(「 –

+0

)你需要在原始問題中提供更多關於你如何運行的細節。你在使用什麼開發環境? –

+0

Oracle Sql開發者版本3.2.10.09。i在.sql文件中寫入這個查詢 –