오늘 추적하기가 정말 어려웠던 버그가 우리 프로젝트에서 나타났습니다."@"/ 문자열 리터럴이없는 SQL Server 매개 변수
데이터가 삽입되거나 업데이트 될 때 여러 가지 저장 프로 시저를 호출하는 등의 특정 작업을 수행하는 트리거가 있었으며 프로그램이 올바르게 작동하는 것처럼 보였습니다. 그렇지 않은 경우를 제외하고.
헤어 테어 링이 끝난 후 EXEC 명령문에서 매개 변수 이름 앞에 누락 된 "@"가 나타납니다. 아래의 최소 예는이 문제를 보여줍니다.
CREATE PROCEDURE EchoString @TheString nvarchar(30)
AS
SELECT @TheString
GO
declare @MyString char(10) = 'FooBar!'
exec EchoString @MyString
exec EchoString MyString -- Why does this work?
이제이 사실이 궁금합니다.이를 허용하는 목적은 무엇입니까? 이전 버전과의 호환성을 위해서만 사용 되었습니까? 아니면 합법적 인 사용 사례가 있습니까? 그것은 어딘가에 문서화되어 있습니까 (내 약한 검색 결과는 공백으로 표시되지만 "@"는 모두 Google 기능이 아닙니다).
입력 해 주셔서 감사합니다. +1. 누구든지 설명서에 대한 지침이 있거나이 기능의이면에있는 근거가 있으면 큰 도움이됩니다. 그렇지 않으면이 대답을 잠시 후 받아 들일 것입니다. – Eyvind