原有11.3版本写的一个批量导出存储过程的批处理:
isql -Uquery -Ppasssword -Sservername -i 1crtprocout.sql -o 3crtsql.bat
将sql语句(1crtprocout.sql ):
use MYDB go select 'defncopy -Uquery -Ppasssword -Sservername out SPALL\'+name+'.sql MYDB '+name from sysobjects where type='P' go
执行输出到3crtsql.bat中。一直正常。然后执行3crtsql.bat就可导出MYDB全部存储过程到SPALL目录下。
在将sybase客户端升级到15.0后,执行却出错,查看错误原因,除字符集问题外(原库字符集为cp850,有些问题),在执行生成的sql批处理时,单条语句由于自动断行而无法正确执行。在命令行里手工跑,发现其实生成的3crtsql.bat按屏幕列宽80断行了,而在11.3中无此问题。
如何办呢?将isql语句里,加上-w 1000参数,指定列宽为1000才换行,这样,在生成的3crtsql.bat里,就不会有断行的defncopy语句了。
原创文章,作者:苏葳,如需转载,请注明出处:https://www.swmemo.com/272.html