Sybase IQ-如何在不包装文本的情况下显示存储过程?
-
30-09-2019 - |
题
使用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
不隶属于 StackOverflow