프로시저로 테이블 컬럼을 여러개로 쪼개여 뿌려주었습니다.
예) SELECT A, B, (A+B) AS C FROM ABC;
위처럼
select a.name from syscolumns a join sysobjects b on a.id = b.id where b.name = 'ABC'
하면 컬럼을 가져오는데 A,B 만 가져옴니다.
A,B,C 모두 가져올수 있나요?
SELECT A, B, (A+B) AS C FROM ABC;
이 예는 ABC라는 테이블에 A, B라는 칼럼은 존재하나
C라는 칼럼은 존재하지 않음을 뜻합니다.
-여기서 존재한다는 의미는 물리적으로 있슴을 뜻합니다.
select a.name from syscolumns ajoin sysobjects bon a.id = b.idwhere b.name = 'ABC'
이 쿼리문은 ABC라는 테이블에서 물리적으로 존재하는 칼럼을
호출하는 것입니다.
당연히 C라는 칼럼은 나오지 않습니다.
즉 C라는 칼럼은 사용자가 임의의 계산을 하여 만든 칼럼인데
그걸 테이블에 물리적으로 잡아준다면
이미 만들어져 있는 테이블에 Selecting만 하여도 칼럼이
만들어지는 아주 우스운 현상이 나올것입니다.
굳이 나오게 해야겠다면
이 부분을 view로 만드시고
에서는 abc를 view명으로 하시면 볼 수 있습니다.
질문을 조금 잘못한것 같네요..
프로시저를 생성하여 case 문으로 컬럼값을 여러개로 분할 하였습니다.
그후 해당 컬럼의 수는 약간의 수정에 따라 들숙 날숙 해지는데..
프로그램에서 매칭을 시켜주기 위해 값을 필드 값을 불러와야
그리드에 뿌려줄수 있을것 같습니다.
뷰에서는 조건문이나 반복문이 먹질 않는것 같은데 ,
다른 방법이 없을까요?
그런 것이라면 굳이 필드의 명칭을 sysobject를 이용하여
추출하지 않아도 될 듯합니다.
(실은 하시고자 하는 작업을 정확히 모르고 추측하는 것이니
심한 태클은 하지마시고요^^)
어디서 보여줄지 잘 모르겠지만
그냥 asp로 가정한다면
Recordset에 이미 Fieldname의 속성이 있습니다.
(Recordset의 개체를 Rs라고 했다면..)
그런 연유로 무심코 사용하는 Rs("col_name")
이런 형식이 가능한 것입니다.
fieldCnt= Rs.fields.count -1
이게 필드의 갯수를 파악하는 것이 되겠지요.
그게 되셨다면 이렇게 뿌려줘봅시다.
<%
sql_sting
set Rs = db_con.Execute(sql_string)
fieldCnt = Rs.Fields.count -1
for i = 0 to fieldCnt
Response.Write Rs(i).Name '이부분이 FieldName추출
If i < fieldCnt Then
Response.Write " : "
end if
Next
%>
이렇게 하시면 FieldName을 뿌려주시는 게 된겁니다.