Sybase IQ - как показать хранимую процедуру без переноса текста? - PullRequest
7 голосов
/ 14 октября 2010

Использование Sybase IQ v12.7.Выполнение sp_helptext ProcedureName показывает текст хранимой процедуры, которая в порядке.Однако он переносит строки в 80 символов.Вопрос в том, как отобразить текстовый текст хранимой процедуры без переноса?

В Sybase Central Java Edition есть функция просмотра текста хранимой процедуры (Tranact-SQL) без переноса строк.Таким образом, вопрос можно сформулировать по-другому: как Sybase Central получает текст хранимой процедуры без переноса текста на 80 символов?

В основном, ищем программный способ выгрузки хранимых процедур для различий.ING и контроль версий.

Спасибо за любые ответы!

Ответы [ 4 ]

10 голосов
/ 15 октября 2010

sp_helptext не выполняет перенос - он разбивает текст определения процедуры на символы новой строки и возвращает каждую строку в виде строки. Если вы хотите, чтобы все возвращалось как одна строка, вы можете выбрать определение процедуры непосредственно из системной таблицы:

select proc_defn from SYS.SYSPROCEDURE where proc_name='<procedurename>'
1 голос
/ 15 октября 2010

В настоящее время у меня нет доступа к sybase IQ или серверу ASA, но я думаю, что вы ищете что-то вроде ASE sp__helptext из http://www.edbarlow.com/gem/procs_only/

Попробуйте переписать его для сервера ASA.

Обновление:

Посмотрите на утилиту defncopy.

0 голосов
/ 03 июля 2013

Если у вас нет defncopy (из Sybase или из FreeTDS), вы можете использовать этот скрипт на основе sqsh и sed: https://gist.github.com/vjt/5920790

0 голосов
/ 29 декабря 2011

Если вы используете isql для выполнения sp_helptext, то, вероятно, вы не указали параметр "-w", который устанавливает значение column_width для текущего сеанса.Попробуйте проделать то же самое с isql -w999, чтобы проверить, не обернут ли он до сих пор.

Для своих собственных целей, для сравнения хранимых процедур, я использую утилиту defncopy, предоставленную Sybase, о которой Кольчанов уже упоминал.

...