SQL의 UDF와 저장 프로 시저 간의 차이점

Anonim

UDF와 스토어드 프로 시저가 있습니다. SQL 환경에는 작업을 성공적으로 전달하기 위해 다양한 구성 요소가 함께 제공됩니다. 사용자 정의 함수와 저장 프로시 저는 SQL 환경 내에서 공통입니다. 이 두 가지의 차이점은 아래에서 검토합니다.

차이점

사용자 정의 함수에서 볼 수있는 첫 번째 차이점은 값을 반환해야하는 방식으로 프로그래밍된다는 것입니다. 저장 프로 시저에는 값을 반환할지 여부에 대한 여유가 있습니다. 이는 스토어드 프로 시저에 반환 할 값이 있는지 여부에 따라 다릅니다.

사용자 정의 함수와 저장 프로 시저 사이에 다른 차이점이 있습니다. 사용자 정의 함수는 DML 문이 허용되지 않는 동안에 만 select 문을 읽을 수 있습니다. 반면에 저장 프로 시저를 사용하면 DML 문뿐만 아니라 선택 문을 모두 사용할 수 있습니다. 또한 DML 문은 업데이트 및 조작 할 수 있습니다.

사용자 정의 함수는 매개 변수의 입력 만 허용하지만 동일한 매개 변수의 출력은 지원하지 않습니다. 반대로 저장 프로시 저는 입력 및 출력 매개 변수를 모두 지원합니다. 또한 UDF는 try-catch 블록 사용을 허용하지 않습니다. 저장 프로시 저는 예외 처리를 위해 try catch 블록을 사용할 수있게합니다.

UDF는 기능이 트랜잭션 내에서 발생하도록 허용하지 않습니다. 이 기능은 트랜잭션 처리를 허용하는 저장 프로 시저에서 사용할 수 있습니다. 또한 UDF는 테이블 변수의 사용을 허용하지 않으며 또한 임시 테이블을 허용하지 않습니다. 그러나 저장 프로시 듀어는 임시 변수뿐만 아니라 임시 변수도 사용할 수 있습니다.

함수에서 UDF는 저장된 테이블을 호출 할 수 없도록합니다. 이것은 스토어드 프로 시저에서 매우 다르며 제한없이 호출 할 수 있습니다. 함수가있는 경우 UDF는 select 문에서 호출 된 함수를 허용하지 않습니다. 또한 저장 프로시 저는 Where / Select 및 Having 문에서 프로 시저를 호출 할 수 없다는 것을 나타냅니다. 그러나 Exec 또는 Execute는 저장 프로 시저를 호출하거나 실행하는 데 사용될 수 있습니다. 마지막으로 UDF를 사용하여 결과 절을 이용하여 조인 절을 작성할 수 있습니다. 저장 프로 시저에서는 조인 절에 프로 시저가 허용되지 않으므로이 작업을 수행 할 수 없습니다. 저장 프로시 듀어는 0 또는 n 값으로 리턴 할 수 있지만 UDF는 사전 설정된 하나의 특정 및 사전 설정 값으로 만 리턴 할 수 있다는 점에 유의해야합니다.

- 9 ->

요약

함수는 저장 프로 시저가 아닌 동안 값을 반환해야합니다.

DML 문은 필요하지 않지만 Select 문은 UDF에서만 허용됩니다.

저장 프로 시저는 DML 문과 마찬가지로 모든 문을 허용합니다.

UDF는 입력 만 허용하고 출력은 허용하지 않습니다. 저장 프로 시저 (stored procedure)는 입력과 출력을 모두 허용합니다.

Catch 블록은 UDF에서 사용할 수 없지만 저장 프로시 듀어에서 사용할 수 있습니다.

UDF의 기능에서는 허용되지 않지만 스토어드 프로 시저에서는 허용되는 트랜잭션이 허용되지 않습니다.

UDF에는 테이블 변수 만 사용할 수 있으며 임시 테이블은 사용할 수 없습니다.

저장 프로시 저는 테이블 변수와 임시 테이블 모두를 허용합니다.

UDF는 저장 프로시 듀어가 함수 호출을 허용하는 동안 저장 프로시 듀어를 함수에서 호출하는 것을 허용하지 않습니다.

UDF는 조인 절에서 사용되지만 저장 프로 시저는 조인 절에서 사용될 수 없습니다.

저장 프로 시저는 항상 0으로 되돌릴 수 있습니다. 반대로 UDF는 미리 정해진 지점으로 돌아와야하는 값을 가지고 있습니다.