오늘 Coupon 을 생성해야 했습니다. 쿠폰에 쿠폰 넘버를 먹여야 하는데... 훔... 오라클에서 이렇게 구현했습니다. 시리얼은 길면 길수록 중복을 차단하는데 도움이 될 것입니다. 이유는 저보다도 잘 아시겠죠?
CREATE OR REPLACE FUNCTION FN_CREATE_STRING
( 
 FI_LENGTH IN NUMBER
)RETURN VARCHAR2 
AS

   TMPGUID VARCHAR2(50) := '';
   RNDVALUE NUMBER := 0;
   V_COUNTER NUMBER := 0;
   V_STRING VARCHAR2(36) := '';
   
BEGIN  

  V_STRING := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  
  FOR V_COUNTER IN 1..FI_LENGTH LOOP
  	  SELECT ROUND(DBMS_RANDOM.VALUE * 36, 0) INTO RNDVALUE FROM DUAL;
  	  TMPGUID := TMPGUID || SUBSTR(V_STRING, RNDVALUE  , 1);
  END LOOP; 
  
  RETURN TMPGUID;

END FN_CREATE_STRING;

그리곤 요로케 쓰시면 됩니다.  ^^
SELECT FN_CREATE_STRING(13) FROM DUAL;


Oracle 버전은 8.1.7 입니다.


행복한 하루되십시요.

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

반응형

+ Recent posts