집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 식 결과를 저장 프로시저 매개 변수로 처리하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!