7

SybaseIQv12.7を使用します。実行sp_helptext ProcedureNameすると、正常なストアドプロシージャのテキストが表示されます。ただし、行は80文字で折り返されます。問題は、ストアドプロシージャのテキストテキストを折り返すことなく表示する方法です。

Sybase Central Java Editionには、行を折り返すことなくストアドプロシージャ(Tranact-SQL)のテキストを表示する機能があります。したがって、質問は別の方法で言い換えることができます。SybaseCentralは、テキストを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 で同じことを実行して、まだラップするかどうかを確認してください。

私自身の目的のために、ストアド プロシージャを比較するために、Kolchanov が既に述べた、Sybase が提供する defncopy ユーティリティを使用します。

于 2011-12-29T13:07:42.180 に答える
0

(Sybase または FreeTDS の) defncopy がない場合は、次の sqsh および sed ベースのスクリプトを使用できます: https://gist.github.com/vjt/5920790

于 2013-07-03T17:37:04.507 に答える