2012-05-07 2 views
0
내가 sprocs가과 기능의 완벽하게 통합 된 SQL 서버 설정에 다소 복잡한 닷넷 윈폼 프로그램을 변환하는 중이 야

을 정의합니다.SQL CLR 통합 - 기능 매개 변수 유형

저는 이없는 타사 데이터베이스에서 작업하고 있습니다. 컨트롤이 전혀 없습니다. 이 데이터베이스에서 사용되는

고유 식별자는 모든 numeric(21) 있습니다. 그것이 좋은 아이디어인지 아닌지는 중요하지 않습니다 ... 나는 그 제약 속에서 일해야합니다.

나는이 값을 사용하는 함수를 코딩하는 방법을 알아내는 데 문제가 있어요. 지금까지, 나는 코드가 .DLL 자체 내에서 호출 될 때 잘 작동하는 나타나는, 그렇게 할 System.Decimal을 사용하고 있습니다. I는 임의의 기능 검사시에 SSMS

그러나, 상기 입력 매개 변수의 데이터 타입 numeric(18,0)이다. 나는 그것이 System.Decimal 타입을 기반으로한다고 가정하고 있지만 그것은 잘못된 것입니다. 그리고 최종 결과는 내가 (SSMS에서) 수동으로 함수를 호출 할 때, 나는 다음과 같은 오류를 얻을 수 있습니다 :

Arithmetic overflow error converting numeric to data type numeric.

이상한 점은 전화 할 것입니다하지 내가 함수를 호출 할 때 실패 .dll 내에서. numeric(18,0) 지정을 무시하려면 어떻게해야합니까? 내가 질문을 게시 한 후 추가로 인터넷 검색을 30 초 같은 답을 발견하면

답변

0

남자, 나는 그것을 싫어!

내가 일 동안보고 있었어요, 맹세 ...

어쨌든, 난 내 입력 매개 변수에 SqlFacet를 추가 할 필요가 있었다. 이에

<Microsoft.SqlServer.Server.SqlProcedure()> 
Public Shared Sub Check(ByVal ID As Decimal) 

:

<Microsoft.SqlServer.Server.SqlProcedure()> _ 
Public Shared Sub Check(<SqlFacet(Precision:=21, Scale:=0)> ByVal ID As Decimal) 

나는이에서 갔다