저장 프로시저 구문
저장 프로시저와 함수의 목적은 데이터베이스를 작동하는 SQL 문 모음을 재현 가능하게 실행하는 것입니다.
글과 전화의 차이입니다.
쓰기: 저장 프로시저의 매개변수 목록에는 입력 매개변수, 출력 매개변수, 입출력이 가능한 매개변수가 있을 수 있으며,
함수의 매개변수 목록에는 입력 매개변수만 있습니다. 이며, return lt; 반환 값 유형이 있으며 길이 지정은 gt;가 아닙니다.
반환 값:
저장 프로시저의 반환 값은 여러 값을 가질 수 있습니다.
함수의 반환 값은 하나의 값만 갖습니다.
호출 방법:
저장 프로시저의 호출 방법은 다음과 같습니다.
1), exec lt;
2) lt; 프로세스 이름 gt;; 실행
3) PL/SQL 문 블록에서 직접 호출합니다.
함수 호출 방법은 다음과 같습니다.
PL/SQL 문 블록에서 직접 호출됩니다.
구체적으로는 다음과 같이 나누어집니다.
----FUNCTION add_ three_numbers 호출
----1. 위치 표현을 이용한 함수 호출
BEGIN
dbms_output.put_line(add_ three_numbers(2, 4, 5))
END
----2.
BEGIN
dbms_output.put_line(add_ three_numbers(b=gt; 3, a=gt; 4, c=gt; 2))
END;
----3. 함수 호출에 위치 표기법과 명명 표기법을 혼합합니다.
BEGIN
dbms_output.put_line(add_ three_numbers(3, b=gt; 4 , c=gt; 2));
END;
----4. 제외 표기법
BEGIN
dbms_output. put_line(add_ three_numbers(12,c=gt;2));
END;
----5. SQL 호출 표현--혼합 표현
SELECT add_ three_numbers(3, b=gt; 4, c=gt; 2) FROM DUAL;
----1 이 함수는 3개의 선택적 매개변수를 허용하고 3개의 숫자를 반환합니다.
함수 만들기 또는 바꾸기 add_ three_numbers
(
a NUMBER:=0, b NUMBER:=0, c NUMBER:=0
)
반환 번호는
BEGIN
반환 a b c
END
저장된 절차:
기본 구문:
프로시저 만들기 lt; 프로시저 이름 gt; (lt; 매개변수 목록, 매개변수가 없으면 gt 무시)
as|is
변수 선언 , 초기화
시작
비즈니스 처리, 논리 코드
예외
예외 캡처, 내결함성 처리
end lt; 프로시저 이름 gt;;
매개변수: lt; 매개변수 이름 gt; in|out|in out lt; 길이 지정 없음 gt; p>in: 입력 매개변수
out: 출력 매개변수
in out: 입력 및 출력 매개변수
참고: as|is는 as 또는 is를 의미합니다.
호출 구문:
1) exec lt; 프로세스 이름 gt;;
2) 실행 lt; 3) PL/SQL 문 블록에서 직접 호출합니다.
예:
up_wap(v_param1 in out varchar2, v_param2 in out varchar2)
is
v_temp varchar2( 20);
시작
dbms_output.put_line('교환 전 매개변수 1: '||v_param1||' 매개변수 2: '||v_param2);
v_temp:=v_param1;
v_param1:=v_param2;
v_param2:=v_temp;
dbms_output.put_line('교환 후 매개변수 1:'|| v_param1||' 매개변수 2: '||v_param2);
예외
다른 경우 dbms_output.put_line('up_wap 프로시저를 실행할 때 오류가 발생했습니다!');
end up_wap;
/
-- 저장 프로시저 호출
선언
v_param1 varchar2(20): ='param1';
v_param2 varchar2(20):='param2';
시작
up_wap(v_param1 =gt; v_param1, v_param2 =gt; v_param2);
end;
/
사용자 정의 함수(함수)
기본 구문:
create function lt; 함수 이름 gt; (lt; 매개변수 목록, 매개변수가 없으면 gt 무시)
return lt; 길이 설명 없음 gt; /p>
변수 선언, 초기화
시작
비즈니스 처리, 논리 코드
return lt; 반환된 값 gt;; p>예외
예외 포착, 내결함성 처리
end lt;
매개변수: 입력 매개변수에 있음
참고: 입력 매개변수 유형만 해당됩니다.
저장 프로시저 및 사용자 정의 함수의 매개변수 전송(입력 매개변수 및 출력 매개변수)은 유형 또는 행 유형 일치를 사용할 수 없으며 Null 값을 사용할 수 없지만 저장 프로시저는 Null 값을 반환할 수 있습니다.
예:
uf_select_name_by_id_test 함수 만들기(v_id는 숫자)
return varchar2
is
v_name t_test .t_nametype;
시작
t_test에서 t_name을 v_name으로 선택합니다. 여기서 t_id=v_id;
return v_name;
예외
다른 경우에는 dbms_output.put_line('error');
end uf_select_name_by_id_test;
/
이중에서 uf_select_name_by_id_test(1) 이름을 선택합니다. -- 호출 선택
declare --pl/sql 명령문 블록 호출
v_name varchar2(20);
시작
v_name: =uf_select_name_by_id_test(1);
dbms_output.put_line('name = '||v_name);
end;
/