使用Sybase IQ v12.7。执行sp_helptext ProcedureName
显示存储过程的文本很好。但是它以80个字符包裹行。问题是,如何在不包装的情况下显示存储过程的文本文本?
在Sybase Central Java Edition中,有一项功能可以查看存储过程(Tranact-SQL)的文本,而不包含换行符。因此,可以用不同的方式重述问题:Sybase Central如何获取存储过程的文本而不将文本包装为80个字符?
基本上寻找一种以编程方式转储存储过程以进行差异和版本控制。
感谢任何回复!
答案 0 :(得分:10)
sp_helptext不执行任何换行 - 它会在换行符处分解过程定义文本,并将每行作为一行返回。如果您希望将整个事件作为单个字符串返回,则可以直接从系统表中选择过程定义:
select proc_defn from SYS.SYSPROCEDURE where proc_name='<procedurename>'
答案 1 :(得分:1)
目前我无法访问sybase IQ或ASA服务器,但我认为你看起来像是来自http://www.edbarlow.com/gem/procs_only/的ASE sp__helptext
尝试为ASA服务器重写这个。
更新
查看defncopy实用程序。
答案 2 :(得分:0)
如果您使用isql执行sp_helptext,那么可能您没有提供“-w”参数,该参数为当前会话设置column_width。尝试对isql -w999执行相同的操作,看它是否仍然包装。
出于我自己的目的,为了比较存储过程,我使用Sybase提供的defncopy实用程序,kolchanov已经提到过。
答案 3 :(得分:0)
如果您没有defncopy(来自Sybase或FreeTDS),您可以使用此基于sqsh和sed的脚本:https://gist.github.com/vjt/5920790