프로그램 내에서 쿼리를 짜고 DB로 부터 데이터셋을 받아서 처리하는 것이 사실
제가 하는 일인데요
예전부터 선배들이 그렇게 알려줬기 때문에 이런식으로 vb내에서 이런식으로 쿼리를 문자열변수에 작성하였습니다.
strSql = strSql + vbCrLf +" select * from data “;
strSql = strSql + vbCrLf +” where 1= 1 “;
strSql = strSql + vbCrLf +” and 2=2";
이번에 이직하게 되어 회사를 옮기게 되서 소스를 보니
sSQL = @“select distinct
col1
from data
where 1=1”;
이런식으로 코딩이 되어 있더라구요.
물론 전 회사에서는 VB를 다루었습니다. 옮긴회사는 C#이구요
아무래도 오랫동안 제 방식대로 코딩을 하다보니 보는것도 편하고 새로운 방식은 볼때는 그렇다쳐도
디버깅 할때 문자열을 추출하여 sql에 붙여넣기를 하면 쿼리가 한줄로 나와서 영 저는 불편하더라구요
그래서 작성할때 좀더 손이가도 제방식대로 코딩을 하고 있었는데요.
갑자기 그냥 문득 저방식을 쓰는대는 이유가 있을거 같은데 왜 그럴까 싶습니다 .
아무리 proc 를 쓰더라도 인라인 쿼리를 쓰는것 어쩔수 없는것 같구요 @Yoonique 님같이 저도 select 절 from절 where 절 되도록
분할해서 쓰는 스타일입니다. 그나마 디버깅할려며 조금 편해서요
뭐가 맞다고 하기에는 그렇지만 나눠서 하는것이 좋을것 같군요
저는 아래처럼 사용하는데,
$를 사용해서 라인과 줄을 맞춰서 가독성을 높이고, @를 사용해서 변수를 삽입합니다.
디버깅할때도 입력한 그대로 나오기 때문에 문제는 없네요.
저도 처음에는 Yoonique님처럼 + 연산자를 사용해서 쿼리를 완성했는데,
일단 이중따옴표와 + 기호 때문에 가독성이 떨어지고, 특히나 insert, update할때 파라미터가 많을 경우 복잡해져서 현재는 $@만 사용하고 있습니다.
string query = $@“SELECT A, B, C
FROM COMMON.MYTABLE MY
WHERE 1 = 1
AND A = {value1}
AND B = {value2}
AND C = {value3}
GROUP BY A, B, C
ORDER BY A”;
(에디터에서 왼쪽 공백을 다 삭제해서 왼쪽 정렬처럼 보이는데, SELECT 라인에 맞춰서 정렬한 상태임)