SQLPLUS执行一个SQL脚本过程中如何能输出一些提示信息呢? 执行完一个sql,在终端提示一下。 test.sql: insert into tablename(col,col2) values('aaa','bbb'); 执行完上面SQL后,提示insert 成功 insert into tablename(col,col2) values('aaa','bbb'); 执行完上面SQL后,提示insert 成功 insert into tablename(col,col2) values('aaa','bbb'); 执行完上面SQL后,提示insert 成功 commit;能实现吗?
sqlplus本身是有会显得,可能是你的echo没有打开。 或者你把它的输出重定向到文件中去了。
我个人喜欢 set serverout on 然后 输出重定向到文件.log中 #!/bin/ksh l_Log=/oracle/abc/analyze.log echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" > $l_Log echo "@ begin analyze Date: `date`" >> $l_Log echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" >> $l_Log sqlplus inter/inter123@sjs <<EOF >>$l_Log set serverout on size 1000000; DECLARE BEGIN FOR rec IN (SELECT table_name FROM user_tables where table_name in (select table_name from table_in_need)) LOOP begin DBMS_STATS.GATHER_TABLE_STATS(ownname=>'INTER',tabname=>rec.table_name,estimate_percent=>100,method_opt=>'FOR TABLE',CASCADE=>FALSE); dbms_output.put_line('ANALYZE '|| rec.table_name ||' FINISHED'); exception when others then dbms_output.put_line(substr(sqlerrm,1,200)); end; END LOOP; END; / quit EOF
sqlplus userid/password@sid @sql.sql
sql.sql:
insert into tablename(col,col2) values('aaa','bbb');
commit;
@d:\XXXX.sql; //在sql.sql中调用其它的sql文件。
exit;
unix的话,要稍微改动一下路径的写法,不过思路是一样的。
sqlplus /nolog <<EOF
/* comments */
connect / as sysdba;
sql statement1
sql statement2
.......EOF
执行完一个sql,在终端提示一下。
test.sql:
insert into tablename(col,col2) values('aaa','bbb');
执行完上面SQL后,提示insert 成功
insert into tablename(col,col2) values('aaa','bbb');
执行完上面SQL后,提示insert 成功
insert into tablename(col,col2) values('aaa','bbb');
执行完上面SQL后,提示insert 成功
commit;能实现吗?
或者你把它的输出重定向到文件中去了。
然后 输出重定向到文件.log中
#!/bin/ksh
l_Log=/oracle/abc/analyze.log
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" > $l_Log
echo "@ begin analyze Date: `date`" >> $l_Log
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@" >> $l_Log
sqlplus inter/inter123@sjs <<EOF >>$l_Log
set serverout on size 1000000;
DECLARE
BEGIN
FOR rec IN (SELECT table_name FROM user_tables
where table_name in
(select table_name from table_in_need))
LOOP
begin
DBMS_STATS.GATHER_TABLE_STATS(ownname=>'INTER',tabname=>rec.table_name,estimate_percent=>100,method_opt=>'FOR TABLE',CASCADE=>FALSE);
dbms_output.put_line('ANALYZE '|| rec.table_name ||' FINISHED');
exception
when others then
dbms_output.put_line(substr(sqlerrm,1,200));
end;
END LOOP;
END;
/
quit
EOF