Oacle 사용자 정의 함수(매우 간단명료)
2694 단어 Oacle
create [or replace] function functionName (parameterName1 mode1 dataType1, parameterName2 mode2 dataType2, ...)
return returnDataType
is/as
-- 、
begin
function_body
return expression
end functionName; -- , end 。
-- mode1、mode2 ,dataType 。returnDataType 。
예 를 들 어 설명 하 다.
1.간단 한 예 를 들다
간단 한 함 수 를 정의 하여 두 수의 합 을 계산 하 다.
create or replace function useEasy(add1 in number, add2 in number)
return number
is
FunctionResult number;
begin
FunctionResult := add1 + add2;
return(FunctionResult);
end useEasy;
함수 의 사용 은 계속 아래 를 보 세 요.
2.복잡 한 예 를 들 어 라(복잡 하지만 실 용적 이다)
1⃣️,함수 의 반환 유형 정의
TYPE 형식 atrr 만 들 기type
1、CREATE OR REPLACE TYPE atrr_type AS OBJECT (
attrId varchar2(40),
objType varchar2(40)
);
2、TYPE 타 입 atrrtype 을 표 로 정의 하고 수신 반환 값 으로 사용 합 니 다.
CREATE OR REPLACE TYPE attr_table AS TABLE of atrr_type;
2⃣️,정의 함수(여기 세 가지 방식 을 소개 합 니 다)
1.커서 형식 으로 돌아 가 는 데 한계 가 있다.
create or replace function selectAttrId(objType in VARCHAR2)
return SYS_REFCURSOR
is
attrId SYS_REFCURSOR;
begin
OPEN attrId FOR
select attr_id, obj_type from CPS_OBJ_ATTR where obj_type = objType;
return(attrId);
end selectAttrId;
2.결과 집합 을 Table 형식 으로 되 돌려 줍 니 다.
create or replace function resultFunction(objType in VARCHAR2)
return attr_table
is
attr_row atrr_type; --
attr attr_table := attr_table(); -- ,
begin
for thisrow in (select attr_id as attrId, obj_type as objType from CPS_OBJ_ATTR where obj_type = objType)
loop
attr_row := atrr_type(thisrow.attrId, thisrow.objType);
attr.extend;
attr(attr.count) := attr_row;
end loop;
return(attr);
end resultFunction;
3.파이프 형식 으로 결과 집합 을 되 돌려 줍 니 다.
create or replace function returnPiperesult(objType in VARCHAR2)
return attr_table pipelined
is
attr_row atrr_type; -- attr_row
begin
for thisrow in (select attr_id as attrId, obj_type as objType from CPS_OBJ_ATTR where obj_type = objType)
loop
attr_row:= atrr_type(thisrow.attrId, thisrow.objType);
pipe row (attr_row);
end loop;
return;
end returnPiperesult;
3⃣️,함수 사용
select resultFunction('turck') from dual; --
select * from table(resultFunction('turck')); -- table , ( type table )
문장 이 실 용적 이 라 고 생각 하 시 면 오른쪽 위 에 점 을 찍 어 주 시 겠 습 니까?
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.