7

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

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

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

感谢任何回复!

4

4 回答 4

10

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

select proc_defn from SYS.SYSPROCEDURE where proc_name='<procedurename>'
于 2010-10-15T13:49:18.820 回答
1

目前我无法访问 sybase IQ 或 ASA 服务器,但我认为您正在寻找类似于http://www.edbarlow.com/gem/procs_only/的 ASE sp__helptext

尝试为 ASA 服务器重写这个。

更新:

查看 defncopy 实用程序。

于 2010-10-15T13:38:47.550 回答
0

如果您使用 isql 执行 sp_helptext,那么您可能没有提供设置当前会话的 column_width 的“-w”参数。尝试对 isql -w999 执行相同的操作,看看它是否仍然换行。

为了我自己的目的,为了比较存储过程,我使用了 Sybase 提供的 defncopy 实用程序,kolchanov 已经提到过。

于 2011-12-29T13:07:42.180 回答
0

如果您没有 defncopy(来自 Sybase 或来自 FreeTDS),您可以使用这个基于 sqsh 和 sed 的脚本:https ://gist.github.com/vjt/5920790

于 2013-07-03T17:37:04.507 回答