저장 프로시저를 생성할 때 표현식의 결과를 매개변수로 사용하는 데 어려움이 있을 수 있습니다. 예는 다음과 같습니다.
<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):
<code>Msg 102, Level 15, State 1, Line 4 Incorrect syntax near '+'.</code>
문법 오류 설명
SQL Server에서는 매개변수 목록에서 이러한 작업을 허용하지 않습니다. 인수는 리터럴 값, 선언된 변수 또는 연산자가 없는 표현식일 것으로 예상됩니다.
해결책: 중간 변수 사용
이 문제를 해결하려면 중간 변수를 사용해야 합니다. 아래의 수정된 코드는 이 접근 방식을 보여줍니다.
<code class="language-sql">DECLARE @pID INT; SET @pID = 1; DECLARE @logMessage VARCHAR(50) = 'Could not find given id: ' + CAST(@pID AS VARCHAR(11)); EXEC WriteLog 'Component', 'Source', @logMessage;</code>
Exec 문 구문
참고로 EXEC 문의 구문은 다음과 같습니다.
<code class="language-sql">[ { EXEC | EXECUTE } ] { [ @return_status = ] { module_name [ ;number ] | @module_name_var } [ [ @parameter = ] { value | @variable [ OUTPUT ] | [ DEFAULT ] } ] [ ,...n ] [ WITH <execute_option> [ ,...n ] ] } [;]</execute_option></code>
현재 제한 사항
SQL Server에서 매개변수 목록의 매개변수에 허용되는 값은 @@ 접두사가 붙은 리터럴 값과 시스템 함수로 제한됩니다. SCOPE_IDENTITY()와 같은 함수는 지원되지 않습니다.
위 내용은 식 결과를 SQL Server 저장 프로시저에 매개 변수로 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!