2011-11-15 1 views
0

SQL 함수에서 메시지 출력을 보완해야합니다. 1 row affected에서와 같이. 함수에서 유효하지 않으므로 SET NOCOUNT을 사용할 수 없습니다.NHibernate SQL에 삽입 계산 된 필드 SET NOCOUNT

누구든지이 방법을 알고 있습니까?

감사합니다.

나는 그것이 본질의 아래 문제를 끓여야하는이 시도의 배경 정보를 제한하려고했다

편집 할 수 있습니다. 그러나 나는 확장 할 것이다. MSSQL2005 및 NHibernate를 사용하여 SQL 테이블에 레코드를 삽입합니다. 테이블에 다시 1 row affected보고하는 함수를 실행하는 계산 된 열이 있습니다.

나는 프로세스의 NHibernate 부분을 실제로 편집하고 싶지 않았지만 어쩔 수없는 것일 수 있습니다.

+0

어떤 종류의 데이터베이스를 사용하고 있습니까? SQL 서버, MySQL, 오라클 등? –

+1

작동하지 않거나 함수를 호출하는 코드에서 SET 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. 카운트 메시지를 억제해야하는 이유를 게시하면 아마도 더 많은 솔루션을 제공 할 수 있습니다.