2011-11-15 2 views
0

SQL関数からのメッセージ出力を抑制する必要があります。 1 row affectedのように。関数内で無効なので、SET NOCOUNTを使用することはできません。NHibernate SQLへのINSERT計算フィールドSET NOCOUNT

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

ありがとうございました。私はそれが本質だまで問題を沸騰させるattempで背景情報を制限しようとしていた

EDIT

。しかし、私は拡大します。私はMSSQL2005とNHibernateを使用してSQLテーブルにレコードを挿入しています。テーブルには、1 row affectedを報告している関数を実行する計算カラムがあります。

私は本当にプロセスのNHibernateの部分を編集したくはありませんでしたが、やむを得ないかもしれません。

+0

どのような種類のデータベースを使用していますか? SQL Server、MySQL、Oracleなど? –

+1

機能しないか、関数を呼び出すコードからNOCOUNTを設定できませんか? –

答えて

2

"(1 row affected)"を返す関数は、バッチ内のより大きなクエリの一部になります。それはでSET NOCOUNT ON機能

あなたがこれを行う必要があり

を持ってしても意味がありません:ストアドプロシージャは、単にこの

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

SET NOCOUNT ONのラッパーです

SET NOCOUNT ON; 
SELECT * FROM MyUDFTVF(); 

注は通常needed to stop triggers etc breaking client codeです:なぜここにそれが必要ですか?

+1

この回答をリードして、NHibernateネイティブの使用から、新しいレコードを挿入するためのSPの配置に変更することに決めました。これは問題を解決するはずです。ご協力いただきありがとうございます。 –

0

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

ストアドプロシージャでは、nocountを設定できます。関数をストアドプロシージャに変換すると、問題が解決されます。

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

P.S.カウントメッセージを抑止する必要がある理由を投稿する場合は、おそらくさらにいくつかのソリューションを提供することができます。

関連する問題