> 데이터 베이스 > MySQL 튜토리얼 > 식 결과를 SQL Server 저장 프로시저에 매개 변수로 전달하려면 어떻게 해야 합니까?

식 결과를 SQL Server 저장 프로시저에 매개 변수로 전달하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2025-01-11 17:22:45
원래의
888명이 탐색했습니다.

How Can I Pass Expression Results as Parameters to SQL Server Stored Procedures?

식 입력을 저장 프로시저 매개변수로 사용

저장 프로시저를 생성할 때 표현식의 결과를 매개변수로 사용하는 데 어려움이 있을 수 있습니다. 예는 다음과 같습니다.

<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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿