336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

java 프로그램 구현시에 오라클의 프로시저에서 예외를 발생시킨 후 코드와 메시지를 전달하는 방법이다.

RAISE_APPLICATION_ERROR(에러코드, 에러구문);

에러코드는 -20000 에서 -20999 사이의 값을 입력한다.

프로시저 생성

create or replace raise_test(P_IN IN VARCHAR2, P_OUT OUT VARCHAR2) IS

V_OUT VARCHAR2(1000);

BEGIN

     BEGIN
          --ERROR 발생코드
     EXCEPTION
          WHEN OTHERS THEN
           ROLLBACK;
            RAISE_APPLICATION_ERROR(-20000, SQLERRM);
     END;

END;
/

JAVA 코드

try{
// 데이터베이스 드라이버를 로드 Class.forName("oracle.jdbc.driver.OracleDriver");
// Connection 객체 생성
Connection con = DriverManager.getConnection( "jdbc:oracle:thin:@localhost:1521:xe","SCOTT","TIGER");
// 프로시저를 실행할 수 있는 Statement 객체 생성
CallableStatement cstmt = con.prepareCall("{call raise_test(?,?)}");
cstmt.setString(1, "값1");
// ?에 값 바인딩
cstmt.setString(2, "값2");
// 프로시저 실행
cstmt.executeQuery();
// 사용다한 객체 닫기
cstmt.close();
con.close();
} catch(Exception e){ System.out.println(e.getMessage()); e.printStackTrace();
}

'Programming > java' 카테고리의 다른 글

오라클 ORDER SIBLINGS BY  (0) 2022.02.08
자바 워터마크 java watermark  (0) 2020.03.29
오라클 두 날짜, 시간 사이를 초단위로 환산하기  (0) 2017.10.22
jdk 1.8 다운로드  (0) 2017.05.19
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

오라클 쿼리 작성시에 CONNECT BY 구문을 사용할때가 있다.
이때 정렬은 ORDER BY 구문으로 처리가 안된다.
ORDER SIBLINGS BY 구문으로 처리해야한다.

SELECT *
  FRIM DEPT_INFO
START WITH DEPT_LVL = 1
CONNECT BY PRIOR DEPT_CD = UPPER_DEPT_CD
ORDER SIBLINGS DEPT_NM ASC

위 쿼리는 부서의 레벨은 1레벨부터 시작하고
부서전체를 트리로 보여주되,
최고상위 부서부터 하위부서이고,
레벨이 같으면 부서명으로 정렬한다.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

java로 구현한 watermark 샘플코드


package org.watermark;


import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.GradientPaint;

import java.awt.Graphics2D;

import java.awt.Rectangle;

import java.awt.RenderingHints;

import java.awt.Shape;

import java.awt.font.GlyphVector;

import java.awt.geom.AffineTransform;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;


import javax.imageio.ImageIO;


public class WaterMarkUtil3 {


    


public static void main(String[] args) {

    String strWText = "ABCDABCDABCDABCDABCDABCDABCD";

        // create graphics context and enable anti-aliasing

   

    try {

    File sourceImageFile = new File("d:/test.jpg");

    File destImageFile = new File("d:/testwater01.jpg");

    BufferedImage sourceImage = ImageIO.read(sourceImageFile);

    Graphics2D g2d = (Graphics2D) sourceImage.getGraphics();

   

        //Graphics2D g2d = original.createGraphics();

        g2d.scale(1, 1);

        g2d.addRenderingHints(

                new RenderingHints(RenderingHints.KEY_ANTIALIASING,

                                   RenderingHints.VALUE_ANTIALIAS_ON));

        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,

                             RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

        // create watermark text shape for rendering

        Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 18);

        GlyphVector fontGV = font.createGlyphVector(g2d.getFontRenderContext(), strWText);

        Rectangle size = fontGV.getPixelBounds(g2d.getFontRenderContext(), 0, 0);

        

        

        

        Shape textShape = fontGV.getOutline();

        //double textWidth = size.getWidth();         

        double textWidth = size.getWidth();

        

        //double textHeight = size.getHeight();

        double textHeight = size.getHeight()*3; // 텍스트 간격이다.

        //AffineTransform rotate45 = AffineTransform.getRotateInstance(Math.PI / 4d);

        AffineTransform rotate45 = AffineTransform.getRotateInstance(Math.PI / 5d);

        Shape rotatedText = rotate45.createTransformedShape(textShape);

        // use a gradient that repeats 4 times

        g2d.setPaint(new GradientPaint(0, 0,

                            new Color(0f, 0f, 0f, 0.1f),

                            sourceImage.getWidth() / 2, sourceImage.getHeight() / 2,

                            new Color(0f, 0f, 0f, 0.1f)));

                            //new Color(1f, 1f, 1f, 0.1f)));

        //g2d.setStroke(new BasicStroke(0.5f));

        g2d.setStroke(new BasicStroke(1f));

        // step in y direction is calc'ed using pythagoras + 5 pixel padding

        //double yStep = Math.sqrt(textWidth * textWidth / 2) + 2;

        double yStep = Math.sqrt(textWidth * textWidth / 2); //

        

        System.out.println("yStep : " + yStep);

        // step over image rendering watermark text

        //for (double x = -textHeight * 3; x < sourceImage.getWidth(); x += (textHeight * 3)) {

         

        for (double x = -textHeight; x < sourceImage.getWidth()/2; x += textHeight) {

       

            double y = -yStep;

                        

            for (; y < sourceImage.getHeight(); y += yStep) {

                g2d.draw(rotatedText);

                g2d.fill(rotatedText);

                g2d.translate(0, yStep);

            }

            

            g2d.translate(textHeight * 3, -(y + yStep));

        }

        

            ImageIO.write(sourceImage, "jpg", destImageFile);

            g2d.dispose();

     

            System.out.println("The tex watermark is added to the image.");         

        

        } catch (IOException ex) {

            System.err.println(ex);

        }

    }


}



샘플로 제작된 이미지



336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

비교하려는 대상의 타입이 보통은 varchar2 또는 char 타입으로 설정되어 있을것입니다.

계산을 하려면 to_date 로 컨버팅을 해야합니다.


SELECT ABS((TO_DATE('큰날짜', 'YYYYMMDDHH24MISS')-(TO_DATE('작은날짜', 'YYYYMMDDHH24MISS')))) *24 *60 *60 FROM DUAL 


이렇게 간단하게 구할 수 있겠네요.

ABS 는 절대값으로 만드는것이구요. 

TO_DATE 함수를 이용해서 더하기 빼기 (+, -) 연산을 하면 일단위로 값이 리턴됩니다.

그 값을 초단위로 환산하기위해서 *24*60*60 해줍니다. 

그러면 초단위로 환산됩니다.


감사합니다.

'Programming > java' 카테고리의 다른 글

오라클:oracle 사용자정의오류 RAISE_APPLICATION_ERROR  (0) 2022.02.08
오라클 ORDER SIBLINGS BY  (0) 2022.02.08
자바 워터마크 java watermark  (0) 2020.03.29
jdk 1.8 다운로드  (0) 2017.05.19
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

이클립스 및 웹 기타 JAVA 어플리케이션 개발시 반드시 필요한 JDK 8 다운로드 링크입니다.

아래의 사이트에서 다운로드 가능합니다. (JAVA 8)


http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html



위 주소로 이동하여 빨간색으로 표시해둔 부분을 체크하시고 OS 버전에 맞는 JDK 를 다운로드 하시기 바랍니다.


+ Recent posts