Chinaunix

标题: SqlPlus如何运行SQL脚本文件啊?盼高手解答! [打印本页]

作者: thanksharp    时间: 2008-11-26 10:56
标题: SqlPlus如何运行SQL脚本文件啊?盼高手解答!
我自己写了一个.sql脚本文件,在sqlplus里无法运行!

SQL> @./test2.sql;
SQL> -- Local variables here
SQL> spool 1.txt;
SQL>
SQL>  declare
  2    r1 number(9);
  3    iii int:=0;
  4    kkk int:=1;
  5    begin
  6      -- Test statements here
  7      --print iii;
  8      dbms_output.put_line('goo........');
  9
10      WHILE iii < kkk LOOP
11      begin
12         this_insert(0,r1);
13         dbms_output.put_line(r1);
14         dbms_output.put_line(iii);
15        --- print r1;
16         iii:=iii+1;
17      end;
18      END LOOP;
19   end;
20   //运行时一直停在这里不动。。。。。。。。。。。。。。。

另外,我想在LINUX下用shell脚本的方式自动执行这个.sql脚本也行不通:

sqlplus -s system/testi @$sql  |tee -a $logs
作者: crosslife    时间: 2008-11-26 11:00
@文件路径

@/usr/test.sql
作者: thanksharp    时间: 2008-11-26 11:09
楼上的大侠,我就是这样运行的,但在sqlplus里面,就会停在那儿不动。。不知道是不是sql脚本的问题。

test2.sql:
set echo on;
-- Local variables here
spool 1.txt;

declare
  r1 number(9);
  iii int:=0;
  kkk int:=1;
  begin
    -- Test statements here
    --print iii;
    dbms_output.put_line('goo........');

    WHILE iii < kkk LOOP
    begin
       this_insert(0,r1);
       dbms_output.put_line(r1);
       dbms_output.put_line(iii);
      --- print r1;
       iii:=iii+1;
    end;
    END LOOP;
end;

shell脚本:

sql="./test2.sql"
logs="./log_procc.log"
echo "start date:`date`>>>>>>>>>>>>" |tee -a $logs
sqlplus -s system/test1 @$sql  |tee -a $logs
echo "end date:`date`<<<<<<<<<<<<<" |tee -a $logs

我直接在sqlplus里面运行@./test2.sql也不行,敲回车就一直显示行号。。。。
SQL> @./test2.sql
20
21
22
23
作者: ILoveMK    时间: 2008-11-26 11:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: ILoveMK    时间: 2008-11-26 11:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: thanksharp    时间: 2008-11-26 11:35
标题: 回复 #5 ILoveMK 的帖子
to ILoveMK:

我把它加上也不行:(,甚至去掉前面的spool 1.txt; 都不行。。。
 
但我手动运行:
SQL> @./test2.sql
20
21
22
23 //一直停在这里,并显示行号,敲N多回车无反应,于是按Ctrl + C
//然后手动运行r 又可以成功,说明语法无错误,只是少了点什么东东。我的最终目的是用shell脚本让它自动运行,初次接触sqlplus,请大家指点迷津啊。。。。

SQL> r
  1   declare
  2    r1 number(9);
  3    iii int:=0;
  4    kkk int:=1;
  5    begin
  6      -- Test statements here
  7      --print iii;
  8      dbms_output.put_line('goo........');
  9      WHILE iii < kkk LOOP
10      begin
11         this_insert(0,r1);
12         dbms_output.put_line(r1);
13         dbms_output.put_line(iii);
14        --- print r1;
15         iii:=iii+1;
16      end;
17      END LOOP;
18   end;
19
20*
goo........
198
0

PL/SQL procedure successfully completed.

SQL>
作者: thanksharp    时间: 2008-11-26 11:49
问题得以解决了。。。。。。。

需要在最后加一个/  汗~~~~~

感谢两位!!
作者: ILoveMK    时间: 2008-11-26 11:59
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2