PL/SQL에서 프로시저나 기능을 위해 언제 가야 합니까?
저는 PL/SQL에 처음으로 몇 가지 실습 사례를 시도하고 있습니다.
PL PL/SQL 하여 몇 .PROCEDURE
&FUNCTION
:
▁the?에 가면 됩니까?PROCEDURE
또는FUNCTION?
즉, 어떤 작업을 사용하든FUNCTION
을 동한작사수여행다니합용하을업일▁using다니▁do를 사용하여 합니다.PROCEDURE
그럼 제가 왜 그 기능을 위해 가야 하나요?그들의 장점은 무엇입니까?FUNCTION
PROCEDURE
에서? PL/SQL에서?
FUNCTION
값을 반환해야 합니다.이것이 기능을 사용하는 유일한 장점입니까, 아니면 다른 기능의 장점이 있습니까?
프로그램 목표에 대해 명확하게 알고 있다면 저장 프로시저 또는 기능을 사용해야 하는지에 대한 답은 전적으로 비즈니스 요구사항과 설계 워크플로우에 따라 달라집니다.만약 당신의 목표에 대해 명확하지 않다면, 당신의 질문과 같은 방식으로, 많은 양의 코딩 절차와 기능은 유용하지 않을 것입니다.
저장 프로시저와 함수는 PL/SQL 프로그래밍에서 서로 다른 용도로 사용됩니다.다음은 다음과 같습니다.
저장 프로시저:
저장 프로시저는 매개 변수를 수락하고 매개 변수에 대해 작업할 수 있는 명명된 블록을 나타냅니다(익명 블록이 아님).
저장 프로시저는 일련의 DML 및/또는 기타 작업을 수행할 수 있는 독립적인 절차 워크플로우를 정의합니다.
저장 프로시저는 값을 반환할 필요가 없습니다.따라서 SQL 문 내부에서 호출할 수 없습니다.저장 프로시저는 PL/SQL 블록 이름 또는 익명으로 실행해야 합니다.
장점:
- 프로시저는 값을 반환할 필요가 없습니다(이것도 단점일 수 있습니다).
- 일련의 DML 또는 DDL 작업을 수행하는 데 사용할 수 있습니다(예, 몇 가지 제한 사항이 있는 동적 SQL을 통해 가능합니다).
PL/SQL 블록에서 독립적인 문으로 간단히 호출할 수 있습니다.
myProcedure (x, y);
단점:
- 할 수 없음 - 또는 에서 호출할 수 없음 - DML
SELECT
진술. - 인덱스에 사용할 수 없습니다.
기능:
함수는 매개 변수를 수락하고 값을 반환할 수 있는 블록으로 명명됩니다.
함수는 절차 워크플로우도 정의하지만 SQL 문에 사용할 경우 DML 또는 DDL을 수행할 수 없습니다.
함수가 반환한 값이 사용되는 SQL 또는 PL/SQL 문에서 함수를 호출해야 합니다. 즉, 변수에 할당되거나 매개 변수로 전달되는 등의 값이 사용됩니다.
장점:
- 쿼리 - 또는 - DML에서 할 수 있습니다.
SELECT
진술. - 함수가 결정론적인 경우(특정 입력 집합에 대해 함수가 호출될 때마다 동일한 출력을 반환함을 의미) 함수 기반 인덱스에서 사용할 수 있습니다.
단점:
- SQL 쿼리에서 호출되는 함수에 DML이 포함되어 있으면 쿼리가 실패합니다.
- 함수는 값을 반환해야 합니다.따라서 함수 호출은 프로시저 호출처럼 독립적인 문이 될 수 없습니다.
- 쿼리 - 또는 - DML에서 할 수 있습니다.
제한이 특제한사있사정함다의사수있다습니용할음서에수는정용자에 사용할 수 .SELECT
및 PL/ 문 PL/SQLIF
에 면에진술은들a.PROCEDURE
수 없다.
넌 할 수 있다.SELECT
에서.FUNCTION
, 그은것입니다.CAST
과 파프라인표그리고로서사용을한을 로.PIPE ROW
이 기능은 나중에 사용할 수 있는 고급 PL/SQL 기능입니다.
Oracle Developer 설명서는 무료이며 매우 유용하므로 온라인으로 참조하십시오.저장 프로시저 개발 및 사용
- 함는값반환합니다를 반환합니다.
A "value"
PL/SQL 표, 참조 커서 등을 포함한 많은 것들 중 하나입니다.또한 SQL 문에서 함수를 사용할 수 있지만 프로시저는 사용할 수 없습니다. - 로직을 프로시저를 사용하여 할 수 . 여기서 우리는 절차에서 여러 값을 반환할 수 있습니다.
OUT
또는IN OUT
매개 변수 - 개인적으로 저는 계산을 위해 함수를 사용합니다. 예를 들어, 조건에 따라 값을 검색하거나 조건이 참인지 거짓인지 확인하는 것과 같은 특정 조건을 확인합니다.
함수에 DML(삽입, 업데이트, 삭제) 문을 둘 수 있습니다.그러나 SQL 쿼리에서는 이러한 함수를 호출할 수 없습니다.*예: 테이블을 업데이트하는 함수가 있으면 SQL 쿼리에서 해당 함수를 호출할 수 없습니다.
select myFunction(field) from sometable; --will throw error.
절차 또는 기능을 사용할지 여부는 사용자의 요구 사항과 사용자의 편안함에 따라 선택할 수 있습니다.
주요 이점:
- 함수는 값을 반환해야 하지만 프로시저는 값을 반환하거나 반환하지 않을 수 있습니다.
- 주로 값을 계산하는 데 사용되는 함수입니다.반면에 절차는 주로 경영진의 비즈니스 논리에 사용됩니다.
- 값을 검색하는 함수이며, 값을 곱하는 절차입니다.
- 함수 값은 하나만 반환해야 하지만 여러 반환 유형을 허용합니다.
함수는 우리가 사용하는 계산 목적에 사용되는 값을 반환해야 합니다.함수 값은 하나만 반환해야 하지만 여러 반환 유형을 허용합니다.함수 우리는 select 문을 사용할 수 있습니다. 프로시저 그것은 값을 반환하거나 반환하지 않을 수 있습니다. 프로시저는 dml 연산을 사용할 수 있습니다. 프로시저만 실행할 수 있습니다.
이 기능보다 절차를 사용하는 것이 더 많은 이점이 있습니다.
execute immediate 문을 사용하여 Dynamically SQL 문을 실행하려면 Procedure를 사용합니다.Function 내부에서는 수행할 수 없습니다.
프로시저는 독립적으로 실행될 수 있지만 함수는 독립적으로 실행될 수 없으므로 실행 가능한 문의 일부여야 합니다.
일부 값을 반환하고 해당 값을 추가로 사용해야 할 경우 언제든지 함수로 이동합니다.일부 값을 최종 결과로 반환하려면 절차를 진행합니다.
물론 함수에서 동적 SQL을 실행할 수 있습니다.테스트를 수행할 수 있는 간단한 기능을 작성하면 작동하는 것을 알 수 있습니다.
대부분의 경우 기능 또는 절차를 사용할 수 있습니다.SQL 문에 사용할지 IF 문에 사용할지 여부와 함수를 사용할지 여부가 다릅니다.그렇지 않으면 사용자와 호출 응용프로그램에 가장 적합한 것을 사용합니다.
언급URL : https://stackoverflow.com/questions/9848926/when-should-i-go-for-procedure-or-function-in-pl-sql
'programing' 카테고리의 다른 글
JQuery 문자열에 검사가 포함되어 있습니다. (0) | 2023.08.15 |
---|---|
Mocha로 Javascript 테스트 - console.log를 사용하여 테스트를 디버깅하려면 어떻게 해야 합니까? (0) | 2023.07.26 |
iOS 기기(모바일 Safari)의 입력 필드에서 텍스트를 프로그래밍 방식으로 선택 (0) | 2023.07.26 |
jQuery를 사용하여 요소를 자동 높이로 애니메이션화 (0) | 2023.07.26 |
Angular 2 테스트 - 비동기 함수 호출 - 사용 시기 (0) | 2023.07.26 |