2012-11-05 4 views
1

C++에서 SQL Server 용 확장 저장 프로 시저를 작성하고 있습니다.srv_paramsetoutput()을 사용하여 nvarchar (max) 또는 varchar (max)를 설정할 수 있습니까?

사용자는 srv_paramsetoutput()을 사용하여 설정할 수있는 OUT 매개 변수를 제공 할 수 있습니다. 그러나이 TEXT, VARCHAR (최대) 또는 NVARCHAR (최대) 설정할 때 항상 실패한 것 같습니다. VARCHAR (max)는 내부적으로 SRVBIGVARCHAR로 참조됩니다.

출력 매개 변수로 사용될 때 xprocs에 액세스 할 수없는 공통적 인 실수가 있습니까? 아니면 이러한 데이터 유형에 액세스 할 수 있습니까?

+0

확장 프로 시저가 사용되지 않으며 새로운 MAX 유형을 지원하지 않습니다. CLR 절차를 사용하십시오. –

+0

나는 C++ (물론)보다 C#을 더 좋아하지만, 설치 경험은 xprocs에서 더 좋다. 거기에 의존하는 써드 파티 소프트웨어가 너무 많아서 몇 년 동안은 잘하면 될 것입니다. – Robin

+0

어떻게 XP에서 설치가 어셈블리보다 낫다고 말할 수 있습니까? * XP는 db *에 포함되어 있지 않습니다. 그들은 백업/복구와 함께 여행하지 않습니다, 그들은 failover에서 길을 잃었어요! –

답변

0

확장 저장 프로 시저에서 반환 할 수있는 최대 길이 값은 8000 (Varbinary 또는 Varchar의 경우) 또는 4000 (nvarchar의 경우)입니다.

+0

이 질문은 xprocs에서 'max'데이터 유형을 사용하는 것이지 기본 문자열 유형이 가질 수있는 최대 길이가 아닙니다. – Robin

+0

나는 그것을하려고 노력했지만 C/C++ 헤더 파일에 정의되어 있어도 지원되지 않는 것으로 보입니다. –

+0

예, 그게 내가 발견 한 것입니다. SQL Server에서 코드를 완전히 옮기기로 결정하기 전에 nvarchar (max) 대신 nvarchar (n)을 사용하도록 SQL 측을 변경했습니다. – Robin

관련 문제