2012-06-06 3 views
3

scope_identity을 자식 저장 프로 시저로 전달하는 것에 대해 많은 논의가 있습니다. 행이 부모 저장 프로 시저에 삽입되고 아이디 저장 프로 시저에 ID 값을 전달하려는 정반대의 시나리오가 있습니다.scope_identity를 저장 프로 시저에 전달

그러나 scope_identity를 자식 프로 시저에 직접 전달하면 SQL Server Management Studio에서 구문 분석 오류가 발생합니다.

create procedure parent 
as 
begin 
    -- insert a record 
    exec child scope_identity() -- this does not work 
end 

그러나 로컬 변수를 사용하면 문제가 해결됩니다.

입력 매개 변수로 직접 scope_identity()을 전달하지 못한 이유는 무엇입니까?

+0

[캐스트 정수 및 TSQL의 varchar에 연결] (http://stackoverflow.com/questions/4936180/cast-integer-and-concatenate-to-varchar-in-tsql) –

+0

구문 상 사용자가 허용됩니다. 일부 함수 (예 :'@@ IDENTITY')를 전달합니다. 이 목록을 확장하면 [Connect 사이트의 공개 요청] (https://connect.microsoft.com/SQLServer/feedback/details/352110/t-sql-use-scalar-functions-as-stored-procedure-parameters) –

+0

@ Martin - 고마워요. 수년이 지난 후에 매개 변수로 표현을 전달할 수 없다는 것을 처음으로 배웠습니다. 나는 약간 충격을 받았다. SQL2012는 개선되었지만 이것이 향상되었는지 여부는 알 수 없습니다. – intangible02

답변

3

함수 결과를 저장 프로 시저 매개 변수로 전달할 수 없습니다. 결과를 변수에 저장 한 다음 변수를 전달하여 후자의 방법을 수행해야합니다.

+0

답변을 제공해 주셔서 감사합니다. 임시 변수를 가지고 살아야하는 것 같습니다. – intangible02