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

在Sybase Central Java Edition中,有一个功能,请参阅“存储过程”(Tranact-SQL)的文本,而无需线包装。因此,问题可以以不同的方式重述:Sybase Central如何在不包装80个字符的情况下获取存储过程的文本?

基本上是寻找一种程序化方法来倾倒存储过程进行扩散和版本控制。

感谢任何回复!

有帮助吗?

解决方案

sp_helptext不做任何包装 - 它在newline字符处分解了过程定义文本,并将每行返回一行。如果您希望将整个内容返回为单个字符串,则可以直接从系统表中选择过程定义:

select proc_defn from SYS.SYSPROCEDURE where proc_name='<procedurename>'

其他提示

目前,我无法访问Sybase IQ或ASA服务器,但我认为您正在从ASE SP__HELPTEXT上寻找类似的东西 http://www.edbarlow.com/gem/procs_only/

尝试为ASA服务器重写此功能。

更新:

查看Defncopy实用程序。

如果您使用ISQL执行SP_HELPTEXT,则可能无法提供“ -w”参数,该参数为当前会话设置column_width。尝试使用ISQL -W999进行同样的操作,以查看它是否仍包裹。

出于我自己的目的,为了比较存储过程,我使用了科尔加诺夫已经提到的Sybase提供的Defncopy实用程序。

如果您没有Defncopy(来自Sybase或Freetds),则可以使用此SQSH和SED脚本: https://gist.github.com/vjt/5920790

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top