SQL Server 저장 프로시저 매개변수 문제
저장 프로시저와 함께 매개변수를 사용하면 데이터베이스 개발이 간소화됩니다. 그러나 저장 프로시저의 매개변수 목록에 식이나 함수 결과를 직접 포함하면 문제가 발생할 수 있습니다. 예를 들어 다음 코드는 다음과 같습니다.
<code class="language-sql">DECLARE @pID int; SET @pID = 1; EXEC WriteLog 'Component', 'Source', 'Could not find given id: ' + CAST(@pID AS varchar);</code>
SQL Server 2005 이하에서는 실패하고 "Msg 102" 구문 오류가 발생합니다. 이 제한은 SQL Server가 매개변수를 처리하는 방식에서 비롯됩니다.
해결책: 중간변수
해결 방법에는 중간 변수를 사용하는 것이 포함됩니다. SQL Server에서는 식 결과를 매개 변수로 직접 포함하는 것을 허용하지 않습니다. 그러나 중간 변수가 해결책을 제공합니다.
수정된 구문은 다음과 같습니다.
<code class="language-sql">DECLARE @pID INT; SET @pID = 1; /* For SQL Server 2008 and later; For earlier versions, these must be separate statements */ DECLARE @string VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11)); EXEC WriteLog 'Component', 'Source', @string;</code>
식의 출력('주어진 ID를 찾을 수 없습니다: ' CAST(@pID AS VARCHAR(11)))을 @string
변수에 할당하여 @string
를 WriteLog
에 매개변수로 전달할 수 있습니다. 표현식의 결과를 효과적으로 통합합니다. 별도의 DECLARE
및 SET
문이 필요한 SQL Server 2008 이전 버전의 중요한 차이점에 유의하세요.
위 내용은 SQL Server에서 식 결과를 저장 프로시저 매개 변수로 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!