본문 바로가기
DB/Oracle

2024_06_12_수

by 알케니브 2024. 6. 12.

오늘의 코딩

ch15_ex01>>>

  • OraProc03
    • cs.setString(2, empno) : 여기의 숫자는 문장의 순서 번호
    • DOUBLE를 쓰면 정수 아래의 소수점까지 표현 가능
    • DOUBLE로 선언했기 때문에 cs.getDouble로 받아줘야함
    •  
package ch15_ex01;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Scanner;

public class OraProc03 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("수정할 Oracle 사원코드  ?");
		String empno = sc.nextLine();
		
		Connection			conn	= null;
		CallableStatement	cs		= null;
		String driver = "oracle.jdbc.driver.OracleDriver";
		// Localhost -> 127.0.0.1; , Port 번호:1521  , xe(orcl)-> Service ID(Sid)
		String url	  = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
		
		// Procedure Calll할 때의 Format
		String sql    = "{? = call func_sal(?)}";  

		
		try {
			Class.forName(driver);	//없어도 될 수 있음, 연결되어 있다면
			conn = DriverManager.getConnection(url,"scott", "tiger");
			cs	 = conn.prepareCall(sql);
			cs.setString(2, empno);//변경사번
			//cs.registerOutParameter(1,java.sql.Types.DOUBLE); 
			cs.registerOutParameter(1, java.sql.Types.DOUBLE); //  변경급여

			//변경급여 //변경시킨 뒤의 값 가져오기
			cs.executeQuery();
			Double		sal		= cs.getDouble(1);
			
			if (sal > 0)	{
				System.out.println("Oracle CallableStatement 수정 성공^^");
				System.out.println("변경 사번 : " + empno);
				System.out.println("변경 급여 : " + sal);
			}
		}catch (Exception e) {
			// TODO: handle exception
		}
		
		
	}

}
  • ORACLE>>함수>>FUNC_SAL
    • Function:
    •  
create or replace Function func_sal  --or replace 꼭 쓰기
                --Function을 쓰면 output이 필요
  (p_empno in number)
RETURN number
is
    vsal emp.sal%type;     -- emp table의 sal과 같은 타입
BEGIN
    -- 급여 10% Up
    UPDATE  emp
    SET     sal=sal*1.1
    WHERE   empno=p_empno;
    commit;
    SELECT  sal
    INTO    vsal
    FROM    emp
    WHERE   empno=p_empno;
    RETURN  vsal;
END;
  • ORACLE>>>scott_0612
Update  Dept
set     dname ='kk', loc='kk'
where   deptno=59
;

create or replace Function func_sal  --or replace 꼭 쓰기
                --Function을 쓰면 output이 필요
  (p_empno in number)
RETURN number
is
    vsal emp.sal%type;     -- emp table의 sal과 같은 타입
BEGIN
    -- 급여 10% Up
    UPDATE  emp
    SET     sal=sal*1.1
    WHERE   empno=p_empno;
    commit;
    SELECT  sal
    INTO    vsal
    FROM    emp
    WHERE   empno=p_empno;
    RETURN  vsal;
END;    


--SELECT  func_sal()
--FROM    dual;

 

 

'DB > Oracle' 카테고리의 다른 글

2024_06_27_목  (0) 2024.06.27
2024_06_26_수  (0) 2024.06.26
2024_06_26_수  (0) 2024.06.26
2024_06_25_화  (0) 2024.06.25
2024_06_11_화  (0) 2024.06.11