[oracle] sys_connect_by_path()

2014. 4. 8. 13:54 from DB

SYS_CONNECT_BY_PATH( 컬럼명, '구분자')

 

오라클 계층형 쿼리함수이다.

첫번째 인자에 컬럼명이 두번째 인자는 구분되는 문자열값을 받는다.

 

ORA-30004 : SYS_CONECT_BY_PATH 함수를 사용할 때 열 값의 일부로 분리자를 사용할 수 없습니다.

 

 

함수에서 받는 컬럼명의 해당 값이 해당 구분자를 포함할때 나는 오류이다.

구분자를 바꾸거나 해당컬럼값에 입력되는 값중 구분자를 제한해야 한다.

 

 

 


 

WITH DT AS 

 

    (SELECT TO_DATE('2014-04-02', 'YYYY-MM-DD') - 7 * (LEVEL-1) AS DT1, LEVEL FROM DUAL

     CONNECT BY LEVEL <= (TO_DATE('2014-04-02', 'YYYY-MM-DD')-(TO_DATE('2014-02-05', 'YYYY-MM-DD')) /7+1

    )

    SELECT CHECK_ID

                 CHECK_CATEGORY,

                 CHECK_CATEGORY_NAME,

                 COUNT(*) OVER(PARTITION BY CHECK_CATEGORY) CHECK_CATEGORY_CNT,

                 ROW_NUMBER() OVER(PARTITION BY CHECK_CATEGORY ORDER BY CHECK_ID) CHECK_CATEGORY_RNUM,

                 CHECK_MANAGER,

                 CHECK_MANAGER_NM,

                 CHECK_CONTENT,

                 CHECK_PARAMETER_TARGET,

                 CHECK_PARAMETER_VALUE,

                 CHECK_PURPOSE_TARGET,               

                 CHECK_PURPOSE_VALUE,        

                 STATE_RESULT,        
       FROM (

                  SELECT CHECK_ID,

                               CHECK_CATEGORY,

                               CHECK_CATEGORY_NAME,

                               CHECK_MANAGER,

                               CHECK_MANAGER_NM,

                               CHECK_CONTENT,

                               CHECK_PARAMETER_TARGET,

                               CHECK_PARAMETER_VALUE,

                               CHECK_PURPOSE_TARGET,               

                               CHECK_PURPOSE_VALUE,        

                               SUBSTR(MAX(sys_connect_by path(STATE_RESULT_VALUE, ';') STATE_RESULT

                     FROM  (

                                SELECT CL.CHECK_ID,

                                             CL.CHECK_CATEGORY,

                                             pkg_common.getCodeValueById(CL.CHECK_CATEGORY) CHECK_CATEGORY_NAME,

                                             CL.CHECK_MANAGER,

                                             pkg_common.getCodeValueById(CL.CHECK_MANAGER) CHECK_MANAGER_NM,

                                             CL.CHECK_CONTENT,

                                             CL.CHECK_PARAMETER_TARGET,

                                             CL.CHECK_PARAMETER_VALUE,

                                             CL.CHECK_PURPOSE_TARGET,

                                             CL.CHECK_PURPOSE_VALUE,

                                             ROW_NUMBER() OVER(PARTITION BY CL.CHECK_ID ORDER BY CL.DT1 DESC) RNUM

                                   FROM (

                                             SELECT * FROM TB_SECU_DAY_CHECK_LIST, DT

                                              WHERE NVL(TB_ITP_SECU_DAY_CHECK_LIST.CHECK_DEL_YN, 'N') = 'N'

                                             ) CL,

                                             (

                                             SELECT STATE_DATE,

                                                          CHECK_ID,

                                                          NVL(STATE_RESULT_VALUE, ' ') STATE_RESULT_VALUE

                                                FROM TB_ITP_SECU_DAY_CHECK_STATE

                                              WHERE STATE_DATE BETWEEN TO_DATE('2014-02-05', 'YYYY-MM-DD') AND

                                                          TO_DATE('2014-04-02', 'YYYY-MM-DD')

                                              ) STATE

                                  WHERE CL.CHECK_ID = STATE.CHECK_ID(+)

                                              AND CL.DT1 = STATE.STATE_DATE(+)

                                  ) SL

                       WHERE 1 = 1

                                   START WITH RNUM   =   1

                                   CONNECT BY PRIOR RNUM = RNUM - 1

                                   AND PRIOR CHECK_ID = CHECK_ID

                                   GROUP BY CHECK_ID,

                                                    CHECK_CATEGORY,

                                                    CHECK_CATEGORY_NM,

                                                    CHECK_MANAGER,  

                                                    CHECK_MANAGER_NM,

                                                    CHECK_CONTENT,    

                                                    CHECK_PARAMETER_TARGET,

                                                    CHECK_PARAMETER_VALUE,

                                                    CHECK_PURPOSE_TARGET,               

                                                    CHECK_PURPOSE_VALUE

                                   ORDER BY CHECK_CATEGORY, CHECK_ID

                         ) WHERE 1=1 ;

 

'DB' 카테고리의 다른 글

테이블 insert 권한 줄때 잊지말고 시퀀스도 select 권한도 함께!  (0) 2014.04.03
PL/SQL  (0) 2014.03.06
SQL 언어의 종류  (0) 2014.03.06
데이터베이스 설계단계  (0) 2014.03.06
SQL 표준 개정이력  (0) 2014.03.06
Posted by 에시드 :

A계정 테이블의 select, insert 권한을 B계정에게 주었다.

 

grant insert, select on a.tb_example to b

 

 

B계정에서 select는 잘 되는데, insert가 되지 않았다.

인서트 시마다  아래와 같은 ORA-00942 오류

ORA-00942: 테이블 또는 뷰가 존재하지 않습니다.

00942. 00000 - "table or view dose not exist"

 

 

 

해당 테이블은 pk가 시퀀스에 물려있는데, 해당계정로그인 후

select a.tb_example_seq.NEXTVAL from dual -- 해보았는데 똑같이 ORA-00942

 

시퀀스에 select 권한을 주지 않아서 발생된 문제이다.

시퀀스 오브젝트도 권한을 주어야 한다.

 

grant select on a.tb_example_seq to b

 

 

 

 

'DB' 카테고리의 다른 글

[oracle] sys_connect_by_path()  (0) 2014.04.08
PL/SQL  (0) 2014.03.06
SQL 언어의 종류  (0) 2014.03.06
데이터베이스 설계단계  (0) 2014.03.06
SQL 표준 개정이력  (0) 2014.03.06
Posted by 에시드 :

NVIDIA SYSTEM TOOLS WITH ESA SUPPORT

2014. 3. 24. 01:45 from util


NVIDIA SYSTEM TOOLS WITH ESA SUPPORT




NVIDIA 시스템 도구는 레거시 지원으로 이전되었습니다. 이번 릴리스는 GeForce 500 시리즈 및 이전 제품을 지원합니다. GeForce 600 시리즈와 새로운 제품용 오버클럭 기능은 몇몇 타사 어플리케이션에서 지원됩니다. 예 : Asus GPU Tweak,EVGA PrecisionMSI AfterburnerZotac FireStorm 등。

해당 NVIDIA 시스템 도구 설치 패키지는 500 시리즈 ,GTX 480과 GTX 470 에 대한 지원이 추가되었으며, 다음의 구성요소들이 포함되어 있습니다:

1. 엔비디아 콘트롤 패널의 엔비디아 퍼포먼스 그룹 (v6.05.30.05)

  • 지포스 GPU
  • – GPU 오버클러킹을 가능하게 해줍니다.

  • 엔포스 MCP
  • – 클럭, 전압량, 속도 조절, 팬을 위한 시스템 튜닝 및 프로파일이 가능합니다.
    – ESA(Enthusiast System Architecture) 구성요소를 위한 지원을 포함하고 있습니다.
    – 상세한 시스템 정보를 표시합니다.

2. 엔비디아 시스템 모니터(v6.05.27.05) 독립 애플리케이션

  • 지포스 GPU
  • – GPU온도 모니터링을 가능하게 해줍니다.

  • 엔포스 MCP
  • – 클럭, 전압, 속도 조절, 팬을 위한 시스템 모니터링을 가능하게 합니다.
    – ESA(Enthusiast System Architecture) 구성요소를 위한 지원을 포함하고 있습니다.



http://www.nvidia.co.kr/object/nvidia-system-tools-6.08-driver-kr.html

'util' 카테고리의 다른 글

msvcr71.dll 파일이 없을때  (0) 2012.10.24
ScreenRuler 모니터 자  (0) 2012.07.30
Posted by 에시드 :

Western dress code 서양복식

2014. 3. 22. 00:21 from image

Western dress code





It was considered polite to western men to kiss the hand of a lady.


Borrowed garments never fit well.


Cut your coat according to your cloth


Posted by 에시드 :

PL/SQL

2014. 3. 6. 14:57 from DB

비교문과 반복문을 사용할 수 없는 SQL언어의 단점을 사용가능하게 만든것이 PL/SQL (Procedural Language-SQL) 언어

 

SQL의 단점

1. 반복처리를 할 수 없다. (loop)

2. 비교처리를 할 수 없다. (if)

3. Error처리를 할 수 없다. (exception처리)

4. SQL문을 캡슐화 할 수 없다.

5. 변수선언을 할 수 없다.

6. 실행할 때마다 분석작업 후 실행

7. Network Traffic을 유발한다.  

 

일반적으로 3GL 언어를 컴파일 언어라고 한다. 즉 미리 실행될 로직(logic)을 작성하여 문법과 테이블의 존재 여부를 컴파일러에 의해 분석하고 그 결과를 바이너리 실행파일로 생성한 후 필요할 때마다 호출하여 실행하는 방법이다.

 

 

 

생성과 실행
 

SQL> Create Procedure SALARY_CAL

         Begin

             Select * INTO :a,m :b

             From emp

             where id = 10;

             If SQL%NotFound then

                ....

             ENDIF

         END;

SQL> Excute SALARY_CAL
 

 

 

 

PL/SQL 언어 유형

PL/SQL은 기본적으로 DECLARE ~ BEGIN ~ EXCEPTION ~ END; 의 기본 문법을 가지고 있다.

3GL 언어(C,C++,JAVA 등)들을 보면 프로그래밍을 하기 위해 main()함수절을 가지고 있는 것과 동일 한 의미이다.

이러한 기본문법으로 생성할 수 있는 PL/SQL의 종류는 다음과 같이 6가지 종류가 있다.

 

1. Anonymous Procedure

  Anonymous(무명의) PL/SQL 블록은 생성할 때 DECLARE~ 문법으로 시작된다.

  사용자가 반복적으로 실행하려는 SQL문을 필요할 때마다 작성하여 실행하는 방법이다.

  그래서, 일반적으로 다른 PL/SQL의 종류와는 달리 데이터베이스 내에 그정보가 저장되어 있지 않기 때문에

  무명인 Anonymous PL/SQL이라고 한다.

 

2. Stored Procedure

  CREATE PROCEDURE name ~ 문법에 의해 생성되면 생성 후 데이터베이스 내에 그 정보가 저장된다.

  이러한 PL/SQL을 NAMED PL/SQL 이라고 한다.

  그중에서도 STORED PROCEDURE는 개발자가 실행하려는 logic을 처리만 하고 PL/SQL 블록이 끝나는 처리흐름을 가졌다.

 

3. Stored Function

  Stored Function은 2번에서 소개한 Stored Procedure와 동일한 개념, 동일한 기능을 가지고 있다.

  한가지 차이점은 Stored Procedure는 로직을 처리만 하고 끝내지만, Stored Function은 그 처리 결과를 사용자에게 돌려준다.

 

4. Package

  PL/SQL 언어를 통해 시스템을 개발하다 보면 수 많은 Stored Procedure, Stored Function들을 생성하게 된다.

  하지만 그수가 너무 많아지면 개발자가 관리하기가 불편하고 어떤 Procedure, Function이 존재하는지 기억하기도 어려워진다.

  이러한 개발환경에서 보다 효과적으로 PL/SQL 블록들을 관리하기 위해 사용되는 것이 패키지다.

  보통 업무단위별로 패키지를 만들어 관리한다. 관리하기 용이하게 하기 위해 사용되어진다.

 

5. Trigger

  트리거는 PL/SQL종류 중 가장 다양한 기능을 가지고 있다. 트리거 생성시 설정한 테이블에 대해 누군가가

  UPDATE, INSERT, DELETE문을 실행하면 그작업을 실행시킨후 또는 실행시키기 전에 TRIGGER에 정의한 로직을 실행시키는

  PL/SQL 블럭이다.  데이터베이스의 감시, 보안, 연속적인 오퍼레이션의 자동처리, HISTORY등등 응용할 데가 많다.

 

6. Object-Type

  오라클 데이터베이스는 버젼 8부터 객체(Object)  옵션을 제공하고 있다.

  또한 객체옵션이 제공되는 데이터베이스를 객체관계형 데이터베이스라고 한다. 이러한 객체에 대해 데이터를 입력, 수정, 삭제

  조회하기 위해서는 반드시 PL/SQL 언어를 사용해야 한다.

 

'DB' 카테고리의 다른 글

[oracle] sys_connect_by_path()  (0) 2014.04.08
테이블 insert 권한 줄때 잊지말고 시퀀스도 select 권한도 함께!  (0) 2014.04.03
SQL 언어의 종류  (0) 2014.03.06
데이터베이스 설계단계  (0) 2014.03.06
SQL 표준 개정이력  (0) 2014.03.06
Posted by 에시드 :