2017년 6월 30일 금요일

오라클 EXCEPTION 진행 문제.

CREATE OR REPLACE PROCEDURE PROCEDURE1AS        V_CNTR_NO VARCHAR2(13) ;        V_ITEM_CD VARCHAR2(13) ;BEGIN    DBMS_OUTPUT.PUT_LINE('시작.') ;    BEGIN        SELECT CNTR_NO INTO V_CNTR_NO FROM TB_OD_CNSGN_FEE;    EXCEPTION    WHEN NO_DATA_FOUND THEN        DBMS_OUTPUT.PUT_LINE('계약번호가 없습니다.') ;    WHEN TOO_MANY_ROWS THEN        DBMS_OUTPUT.PUT_LINE('계약번호가 두건 이상입니다.') ;    END;        DBMS_OUTPUT.PUT_LINE('중간.') ;        BEGIN        SELECT ITEM_CD INTO V_ITEM_CD FROM TB_OD_CNSGN_FEE;    EXCEPTION    WHEN NO_DATA_FOUND THEN        DBMS_OUTPUT.PUT_LINE('아이템코드가 없습니다.') ;    WHEN TOO_MANY_ROWS THEN        DBMS_OUTPUT.PUT_LINE('아이템코드가 두건 이상입니다.') ;    END;        DBMS_OUTPUT.PUT_LINE('끝.') ;    EXCEPTION  WHEN OTHERS THEN    DBMS_OUTPUT.PUT_LINE('TOP EXCEPTION.') ;END PROCEDURE1;-------실행결과----------------------------계약번호가 두건 이상입니다.아이템코드가 두건 이상입니다.끝.프로세스가 종료되었습니다.

보통 EXCEPTION 처리를 위와 같이 중첩 블록을 사용하였다.
문제는 EXCEPTION이 발생하여도 해당 블록만 멈추고 다음으로 계속 진행을 한다.
자바와는 다르다.
그래서 각 블록마다 RAISE_APPLICATION_ERROR를 발생시키거나, 메인 블록만 남기는 방법을 선택해야 한다.

2017년 6월 1일 목요일

우클릭시 text 복사

우클릭시 '복사' DIV 나타나서 클릭시 우클릭 위의 TEXT를 복사하는 스크립트이다.

원했던 건 우클릭하면 바로 복사 하려고 하였으나,
왜 그런지 document.execCommand("copy"); 가 동작하지 않는다.
그래서 click 이벤트로 발생하기 위해 '복사'div 를 생성하였다.
	function copyToClipboard(value, showNotification, notificationText) {	    var $temp = $("<input>");	    $("body").append($temp);	    $temp.val(value).select();	    document.execCommand("copy");	    $temp.remove();	    if (typeof showNotification === 'undefined') {	        showNotification = true;	    }	    if (typeof notificationText === 'undefined') {	        notificationText = "Copied to clipboard";	    }	    var notificationTag = $("div.copy-notification");	    if (showNotification && notificationTag.length == 0) {	        notificationTag = $("<div/>", { "class": "copy-notification", text: notificationText });	        $("body").append(notificationTag);	        notificationTag.fadeIn("slow", function () {	            setTimeout(function () {	                notificationTag.fadeOut("slow", function () {	                    notificationTag.remove();	                });	            }, 10);	        });	    }	}	var copyData = "";	//$(".context-menu-one").on("contextmenu", function(event) {	$("table").on("contextmenu", function(event) {		event.preventDefault();		$("div.custom-menu").remove();		copyData = $.trim(event.target.textContent);	    	    $("<div class='custom-menu'>복사</div>")	        .appendTo("body")	        .css({top: event.pageY + "px", left: event.pageX + "px"})	        .on("click", function(event) {		    event.preventDefault();		    copyToClipboard(copyData);		    copyData = "";		    $("div.custom-menu").remove();			});		$("body").click(function (){			 $("div.custom-menu").remove();		});	});	

 
/* 우측 클릭 '복사' */.custom-menu {    z-index:1000;    position: absolute;    background-color:#C0C0C0;    border: 1px solid black;    padding: 2px;    border-radius: 5px; }.copy-notification {      color: #ffffff;      background-color: rgba(0,0,0,0.8);    padding: 20px;      border-radius: 30px;      position: fixed;      top: 50%;      left: 50%;      width: 150px;      margin-top: -30px;      margin-left: -85px;      display: none;      text-align:center;  }

참조