Long time no writing :(
最近一直在忙乱起八糟的事情,生活上,工作上。。。。
闲话不说了,今天碰到一个诡异的事情。其实要做的事情相当简单,就是在SQL*PLUS里面执行一堆SQL文件,为了管理清晰些,我把很多内容拆成了很多小的SQL文件,放到不同文件夹中,每个文件夹中都有一个index.sql文件包含这个文件夹下的所有sql文件,最后有个总的index.sql文件用来当做入口来执行。
就像如下这样:
比如说在Table\index.sql里面就包含了文件夹Tabe下所有的sql文件,
@@LXXXTTT.SQL
@@XXXXXX.SQL
@@register_objects.txt
本来是很简单的,应该没有任何问题,可是在运行的时候居然碰到如下问题,
Elapsed: 00:00:00.56
20:21:52 SQL> Error 45 initializing SQL*Plus
Internal error
脚本只是执行到Table\register_objects.txt就遇到这个问题了,不再往下执行了。register_objects里面只是运行一个SP而已,
1 -------------------------------------------------------------------- 2 --!!Attention!! 3 --Put Foreign Key creation in this file 4 -------------------------------------------------------------------- 5 BEGIN 6 PACssssT.CRsssTE_FK(v_table_name => 'LsDssss_ASSOCIATE', 7 v_child_columns => 'DsssENT_ENTRY_ID', 8 v_parent_table => 'LO_DOsssNT_ENTRY', 9 v_parent_columns => 'ID', 10 v_delete_rule => 'cascade', 11 v_fpm_id => 'Uss1676', 12 v_products => 'W'); 13 END; 14 /
15 <空行>
16 <空行>
最后仔细瞅了瞅,发现这个文件最后有两个空行,去掉一个空行,然后运行就没有错了!! 相当诡异!!
--------
P.S.
写了一个小bat, 方便生成index.sql
1 @echo off 2 if exist index.sql del index.sql 3 dir *.sql /B /O N >> index.tmp 4 dir *.pks /B /O N >> index.tmp 5 dir *.pkb /B /O N >> index.tmp 6 dir *.txt /B /O N >> index.tmp 7 for /F %%i in (index.tmp) do echo @@%%i >> index.sql 8 del index.tmp 9 exit