0

SQL 関数からのメッセージ出力を抑止する必要があります。のように1 row affectedSET NOCOUNT関数内で無効なので使えません。

誰でもこれを行う方法を知っていますか?

ありがとう。

編集

問題を本質にまで煮詰めようとして、背景情報を制限しようとしていました。でも伸ばします。MSSQL2005 と NHibernate を使用して、レコードを SQL テーブルに挿入しています。テーブルには、レポートを返す関数を実行する計算列があります1 row affected

プロセスの NHibernate 部分を編集したくはありませんでしたが、やむを得ない場合があります。

4

2 に答える 2

2

「(1行が影響を受ける)」を返す関数は、バッチ内のより大きなクエリの一部になります。関数SET NOCOUNT ON 含めるのは意味がありません

これを行う必要があります:

SET NOCOUNT ON;
SELECT * FROM MyUDFTVF();

ストアドプロシージャは、このための単なるラッパーであることに注意してください

CREATE PROC Whatever
AS
    SET NOCOUNT ON;
    SELECT * FROM MyUDFTVF();
GO

SET NOCOUNT ON通常、トリガーなどがクライアントコードを壊すのを防ぐために必要です:なぜここでそれが必要なのですか?

于 2011-11-15T09:53:01.433 に答える
0

機能ではnocount設定できません。

ストアド プロシージャを使用すると、 を設定できますnocount。そのため、関数をストアド プロシージャに変換すると問題が解決します。

それ以外の場合、呼び出しコードは を設定する必要がありますnocount。それは難しいことではありませんが、関数が多くの場所で使用されている場合は面倒かもしれません。

PSカウントメッセージの抑制が必要な理由を投稿すると、おそらくさらにいくつかの解決策を提供できます.

于 2011-11-15T09:50:05.897 に答える