본문 바로가기

database

(19)
JEUS XAException발생시 처리방법 jeus에서 data-source를 사용할 때, data-source-type을 XADataSource으로 하면 다음과 같은 에러를 접하게 됩니다. [2007.11.20 10:53:04][0][0_434] [container1-11] [TMRecovery-1217] XA Exception has occurred with error code error code : -3, XAER_RMERR, A resource manager error has occurred in the transaction branch. while calling recover(). javax.transaction.xa.XAException at oracle.jdbc.xa.OracleXAResource.recover(OracleXAReso..
ORACLE 캐릭터셋 변경 ORACLE 캐릭터셋 변경 먼저 확인 SELECT * FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER LIKE '%CHAR%' $ORACLE> sqlplus '/as sysdba' SQL> SHUTDOWN IMMEDIATE; SQL> STARTUP MOUNT; SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL> ALTER DATABASE OPEN; SQL> ALTER DATABASE CHARACTER SET KO16MSWIN949; SQL> SHUTDOWN IMMEDIATE; SQL>..
다중 Row 결과를 단일행으로 컴마로 분리해 출력하는 방법 SELECT SUBSTR (MAX (SYS_CONNECT_BY_PATH (ename, ',')), 2) path# FROM (SELECT ename, ROWNUM rnum FROM emp) START WITH rnum = 1 CONNECT BY PRIOR rnum = rnum - 1 SELECT deptno, SUBSTR (MAX (SYS_CONNECT_BY_PATH (ename, ',')), 2) path# FROM (SELECT ename, deptno, ROW_NUMBER () OVER (PARTITION BY deptno ORDER BY ename) rnum FROM emp) START WITH rnum = 1 CONNECT BY PRIOR rnum = rnum - 1 AND PRIOR deptn..
Never Use a RETURN Statement Inside a Loop Never Use a RETURN Statement Inside a Loop Unfortunately, such things have been known to happen. In the following example of terrifically poor programming practice, the FOR loop is interrupted—not with an EXIT, which would be unstructured enough, but with a RETURN statement: BEGIN the_rowcount := Get_Group_Row_Count( rg_id ); FOR j IN 1..the_rowcount LOOP col_val := Get_Group_Char_Cell( gc_id, j..
EXECUTE IMMEDIATE 오라클에서 처음으로 만들어 본 Dynamic SQL, MS-SQL에서 많이 했던 작업이었는뎅.. 뭐랄까 귀찮다고 해야 되나.. DDL이 procedure에서 안되게 만든 이유에 대해 생각해봐야 겠다. CREATE OR REPLACE PROCEDURE sp_apply_off_apply_final IS v_sql LONG; v_temp VARCHAR2 (500); CURSOR cur_exists_table IS SELECT table_name FROM user_tables WHERE table_name = 'TEMP_APPLY_FINAL'; CURSOR cur_exists_index IS SELECT index_name FROM user_indexes WHERE index_name = 'IDX_TEMP_AP..
오라클 테이블정보 쿼리 잘되는군...ㅋㅋㅋㅋㅋㅋㅋ SELECT owner, (SELECT TRIM (comments) FROM all_tab_comments WHERE owner = a.owner AND table_name = a.table_name) AS tab_comment, a.table_name, a.column_name AS col_name, DECODE (a.data_type, 'DATE', 'DATE', 'NUMBER', 'NUMBER(' || data_length || DECODE (data_precision, NULL, '', ',' || data_precision) || ')', a.data_type || '(' || data_length || ')' ) AS data_type, data_length AS d..
SQL%ROWCOUNT SQL%ROWCOUNT 이걸로 프로시져에서 DBMS_OUTPUT.put_line을 통해 적용행수를 보여줄수 있을듯.. DBMS_OUTPUT.put_line은 sql plus에선 SQL> SET SERVEROUTPUT ON ; -- (DBMS_OUTPUT.PUT_LINE을 출력하기 위해 사용) 이거 해줘야 보임.. 토드에선 아래쪽에서 DBMS Output선택하고.. 왼쪽 빨간버튼 초록색으로 활성화 해놓으면 보임..ㅋㅋ 참고로 옛기억을 되살리면.. sql-server에선 @@rowcount 였던걸로 기억함.. SQL%ROWCOUNT : 가장 최근에 수행된 SQL 문에 의해 영향을 받은 행의 갯수 (정수 값) SQL%FOUND : 가장 최근에 수행된 SQL 문에 의해 영향을 받은 행의 갯수가 한 개 이상이면 ..
순위(RANK)관련 오라클 함수 /* 순위와 관련된 오라클 함수 RANK() ROW_NUMBER() DENSE_RANK() RANK 함수가 동일한 값에 대해서는 동일한 순위를 부여하는데 반해, ROW_NUMBER 함수는 유니크한 순위를 부여한다. DENSE_RANK()함수는 중복 RANK의 수와 무관하게 순위를 부여한다. oracle 8i(8.1.6)이상 plsql내에서는 oracle 9i이상 */ -- RANK() 함수를 사용하여 급여순으로 순위 부여 SELECT empno, ename, sal, RANK () OVER (ORDER BY sal DESC) AS RANK FROM emp -- PARTITION BY를 이용해서 그룹별로 순위 부여 SELECT deptno, ename, sal, RANK () OVER (PARTITION ..