Sybase IQ - 如何在不包装文本的情况下显示存储过程?

时间:2010-10-14 08:23:56

标签: sql tsql sybase-iq sybase-asa

使用Sybase IQ v12.7。执行sp_helptext ProcedureName显示存储过程的文本很好。但是它以80个字符包裹行。问题是,如何在不包装的情况下显示存储过程的文本文本?

在Sybase Central Java Edition中,有一项功能可以查看存储过程(Tranact-SQL)的文本,而不包含换行符。因此,可以用不同的方式重述问题:Sybase Central如何获取存储过程的文本而不将文本包装为80个字符?

基本上寻找一种以编程方式转储存储过程以进行差异和版本控制。

感谢任何回复!

4 个答案:

答案 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