Sybase IQ - как показать хранимую процедуру без переноса текста?

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

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

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

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


person FuzzyWuzzy    schedule 14.10.2010    source источник


Ответы (4)


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

select proc_defn from SYS.SYSPROCEDURE where proc_name='<procedurename>'
person Graeme Perrow    schedule 15.10.2010
comment
Отлично, спасибо. Это именно то, что я искал. При запуске sp_helptext в клиенте, таком как sqldbx, длинные строки в хранимой процедуре переносятся по 80 символов. Так что, возможно, это проблема с клиентом или какой-то настройкой клиентского соединения. В любом случае запрос к таблице SYS.SYSPROCEDURE выполняет работу напрямую. - person FuzzyWuzzy; 15.10.2010

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

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

Обновлять:

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

person kolchanov    schedule 15.10.2010

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

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

person B0rG    schedule 29.12.2011

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

person vjt    schedule 03.07.2013