본질적으로는 차이가 없습니다. 함수에는 하나의 변수만 반환할 수 있다는 제한이 있습니다. 저장 프로시저는 여러 개를 반환할 수 있습니다. 함수는 SQL에 포함될 수 있고 선택에서 호출될 수 있지만 저장 프로시저는 그럴 수 없습니다. 실행의 본질은 동일합니다.
함수에는 많은 제한이 있습니다. 예를 들어 임시 테이블을 사용할 수 없으며 테이블 변수만 사용할 수 있습니다. 사용할 수 없는 기능 등도 있습니다. 저장 프로시저에는 제한 사항이 상대적으로 적습니다.
1. 일반적으로 저장 프로시저로 구현되는 함수는 더 복잡하고, 함수로 구현되는 함수는 더 타겟이 명확합니다.
2. 저장 프로시저의 경우 매개변수가 반환될 수 있지만 함수는 값이나 테이블 개체만 반환될 수 있습니다.
3. 저장 프로시저는 일반적으로 독립적인 부분(EXEC 실행)으로 실행되는 반면, 함수는 쿼리문(SELECT 호출)의 일부로 호출될 수 있으므로 테이블 개체에서 사용할 수 있습니다. query 명령문에서 FROM 키워드 뒤에 위치합니다.
4. 저장 프로시저와 함수가 실행되면 SQL 관리자는 프로시저 캐시로 이동하여 해당 쿼리 문을 가져옵니다. 프로시저 캐시에 해당 쿼리 문이 없으면 SQL 관리자는 저장 프로시저와 함수를 실행합니다. 엮다.
프로시저 캐시에 저장되는 것은 실행 계획입니다. 컴파일된 후 프로시저 캐시에 있는 실행 계획이 실행됩니다. 이후 SQL SERVER는 각 상황에 따라 이를 캐시에 저장할지 여부를 고려합니다. 실행 계획에서 첫 번째 판단 기준은 이 실행 계획이 사용될 수 있는 빈도입니다. 두 번째는 이 계획을 생성하는 데 드는 비용, 즉 컴파일하는 데 걸리는 시간입니다. 캐시에 저장된 계획은 다음에 실행될 때 컴파일할 필요가 없습니다.