免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 18760 | 回复: 7
打印 上一主题 下一主题

SqlPlus如何运行SQL脚本文件啊?盼高手解答! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-26 10:56 |只看该作者 |倒序浏览
我自己写了一个.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

论坛徽章:
0
2 [报告]
发表于 2008-11-26 11:00 |只看该作者
@文件路径

@/usr/test.sql

论坛徽章:
0
3 [报告]
发表于 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

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
4 [报告]
发表于 2008-11-26 11:19 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
5 [报告]
发表于 2008-11-26 11:24 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 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>

论坛徽章:
0
7 [报告]
发表于 2008-11-26 11:49 |只看该作者
问题得以解决了。。。。。。。

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

感谢两位!!

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
8 [报告]
发表于 2008-11-26 11:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP