1
2
3 |
SELECT 'TEST1' AS COL1 FROM dual
UNION ALL --테이블 2개를 합침
SELECT 'TEST2' AS COL1 FROM dual; |
1
2
3 |
SELECT 'TEST1' AS COL1 FROM dual
UNION ALL /* 테이블 2개를 합침 */
SELECT 'TEST2' AS COL1 FROM dual; |
'-- 주석문' 의 경우는 한 줄 전체를 주석처리 하는 문법이고 '/* 주석문 */' 은 '/*' 부터 시작해서 '*/'까지를 주석처리하는 범위형 문법입니다. 위 두개의 sql문은 의미상 차이가 전혀 없죠. 하지만 sql을 실행하는 프로그램에 따라서 문제가 발생할 수도 있습니다.
1 |
SELECT 'TEST1' AS COL1 FROM dual UNION ALL --테이블 2개를 합침 SELECT 'TEST2' AS COL1 FROM dual; |
1 |
SELECT 'TEST1' AS COL1 FROM dual UNION ALL /* 테이블 2개를 합침 */ SELECT 'TEST2' AS COL1 FROM dual; |
sql 실행에서 문제가 발생하지는 않았지만, error가 발생해서 log를 찾을 때 sql문을 한줄로 반환해 주는 경우를 봤습니다. 위의 구문처럼 '--주석문'은 한줄이 되어버리니 다음줄까지 전부 주석으로 인식합니다. 쿼리가 길어질수록 알아보기 힘들죠..
1 |
SELECT 'TEST1' AS COL1 SELECT 'TEST1' AS COL1 FROM dual --테스트 |
위와 같은 일반적인 쿼리를 실행할때,
1
2
3 |
SELECT (
SELECT 'TEST1' AS COL1
FROM dual --테스트 ) SQLT (WHERE 1=1) |
내부적으로 위와 같은 쿼리로 변형해서 처리하는 프로그램도 있습니다.
쿼리 중간에 '--주석문'을 사용하면 문제없이 잘 돌아가지만 마지막 라인에 '--주석문'을 사용하면 내부적으로 추가되는 sql구문도 주석으로 인식해 버리게 되어 왜 에러가 발생하는지 찾기 어려운 에러가 발생합니다.
1
2
3 |
SELECT (
SELECT 'TEST1' AS COL1
FROM dual /* 테스트 */ ) SQLT (WHERE 1=1) |
'/* 주석문 */'을 사용하면 위와 같은 경우에도 원하는 부분만 주석처리되어 에러가 발생하지 않습니다. 위의 두가지 경우를 모두 겪어본 뒤로는 '--주석문'을 기피하고 '/* 주석문 */'의 형식만을 사용하고 있네요.
별 것 아니지만 '--주석문' 대신 '/* 주석문 */'을 사용하는 습관을 가지는 것이 좋겠다는 생각으로 글 남겨봅니다.
'공대 (Logical Life) > 프로그래밍' 카테고리의 다른 글
oracle sql partition by 사용 예문 (0) | 2012.11.14 |
---|---|
oracle pl/sql pipelined를 사용한 table 형태 반환 function (0) | 2012.11.13 |
java에서 String 변수를 equals 함수로 비교할 때, NullPointerException 방지 (0) | 2012.06.20 |
제11회 2011 한국 자바 개발자 컨퍼런스 (0) | 2011.06.17 |
ACM-ICPC 기출문제 모음 (1) | 2009.01.13 |