simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링
  • 자바
  • 참조타입
  • 컨트롤러
  • 자바프로그래밍
  • controllerTest
  • 404
  • JVM메모리구조
  • 참조변수
  • null
  • scanner #next() #nextLine()
  • 자바프로그램
  • 자바메모리구조

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234
Language/SQL

[DATABASE] PL/SQL 프로시져

[DATABASE] PL/SQL 프로시져
Language/SQL

[DATABASE] PL/SQL 프로시져

2022. 4. 27. 16:20

■ 프로시저란?

- 어떤 업무를 수행하기 위한 절차로 자주 쓰는 명령을 절차적으로 지정해둔 형태

 

■ 함수와 프로시져의 차이점

https://mjn5027.tistory.com/47

 

[ Oracle ] 프로시저와 함수의 차이

오라클을 사용하다보면 자주 접하게 되는 프로시저와 함수. ​ 이 둘의 정의와 차이점에 대해 알아보자. 프로시저(Procedure)란? 넓은 의미로는 어떤 업무를 수행하기 위한 절차를 뜻한다. ​ 예를

mjn5027.tistory.com

 

■ 프로시져 코딩 예시

-- 수정
create or replace procedure book_update(v_name IN varchar2, v_price IN number, v_idx IN number)
is
begin
   UPDATE book SET name = v_name, price = v_price WHERE idx = v_idx;
   commit;
end;
/


--삭제
create or replace procedure book_delete(v_idx IN number)
is
begin
   DELETE from book WHERE idx = v_idx;
   commit;
end;
/

-- 추가
create or replace procedure book_insert(v_name IN varchar2, v_price IN number)
is
begin
   INSERT INTO book VALUES((SELECT nvl(MAX(idx), 0) + 1 FROM book),v_name,v_price);
   commit;
end;
/

 

■ 명령 프롬프트에서 프로시저 생성 및 실행하는 법

 

 

■ CallableStatement를 사용하여 프로시져 구문 쓰기

- CallableStatement는 PreparedStatement를 상속한다.

package mymain;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
//import oracle.jdbc.driver.OracleDriver;

public class MyMain_DBTest2_프로시져 {
	
	//DB Driver Loading
	//메인 메소드가 시작되기 전에 먼저 0순위로 선작업.
	static {
		// 0. 객체가 생성 되기 이전에 클래스를 메모리에 적재 
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws Exception{
		// 1. Connection을 얻어오기
		//(1) 연결경로, 사용자정보 가져오기
		//            jdbc:oracle:드라이버종류:@IP주소:포트:db아이디   <<- JavaEE에서 Data Source Explorer > Properties의 URL복사
		String url = "jdbc:oracle:thin:@localhost:1521:xe"; 
		String user = "test1";
		String pwd  = "test1";
		
		//(2) Connection 인스턴스를 싱글톤 방식으로 가져온다.
		Connection conn = DriverManager.getConnection(url, user, pwd);
		System.out.println("---------Success Connection-------");
		
		//2. Procedure사용할 객체
		String sql = "call book_insert(?, ?)";
		CallableStatement cstmt = conn.prepareCall(sql);
		
		//3. Parameter
		cstmt.setString(1, "And");
		cstmt.setInt(2, 22000);
		
		//4. 실행
		cstmt.executeUpdate();
		
		//5. 닫기 (열린 역순)
		cstmt.close();
		conn.close();
		
	}

}

 

 

[출처]

함수와 프로시저의 차이 https://mjn5027.tistory.com/47

'Language > SQL' 카테고리의 다른 글

데이터베이스 환경 구축(설치)  (0) 2022.08.11
파일시스템과 DBMS, RDMBS  (0) 2022.08.10
[DATABASE] MVC 모델 구현 _ 성적 관리 프로그램  (0) 2022.04.25
[DATABASE] 자바를 통한 DB 모듈화  (0) 2022.04.23
[DATABASE] PreparedStatement를 사용하여 시큐어코딩하기  (0) 2022.04.21
  • ■ 프로시저란?
  • ■ 함수와 프로시져의 차이점
  • ■ 프로시져 코딩 예시
'Language/SQL' 카테고리의 다른 글
  • 데이터베이스 환경 구축(설치)
  • 파일시스템과 DBMS, RDMBS
  • [DATABASE] MVC 모델 구현 _ 성적 관리 프로그램
  • [DATABASE] 자바를 통한 DB 모듈화
simDev1234
simDev1234
TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.