2013-01-15 32 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文件中写入这个查询 –