2013-06-20 3 views
0

4에서 31까지 계산됩니다.이 수는 테이블의 열 수입니다. 계산과 관련하여 열 이름을 알고 싶습니다. 루프를 적용 할 때 내 열 개수가 변경됩니다. 예 : 내 열은 F3, F4, ..... F31입니다. 내 수는 4에서 시작합니다. 현재 내 열은 F3입니다. 열 이름의 이름을 어떻게 얻을 수 있습니까? 다음에 카운트가 4가되면 포인터가 F4 열로 이동합니다. 이 순간 나는 열 이름을 F4로 원한다. 이것을 어떻게 할 수 있습니까? 다음은 나를 위해 열을 계산하지 않는 코드입니다.열 수에서 열 이름 가져 오기

declare @col_Count int 
set @col_Count = (select count(*) NoOfColumns from SYSCOLUMNS 
WHERE id= (Select id from SYSOBJECTS where name = 'TEMP_STOCK_uPDATE')) 
select syscolumns from dbo.TEMP_STOCK_uPDATE 
+1

보통 "위치"로 열을 사용하여 작업하는 것은 일반적으로 위험합니다. 열은 이름에 의해서만 (이상적으로) 참조되어야합니다. 아마도 당신이 해결하려고하는 문제 (솔루션의 명백한 부분이 아닌)를 우리에게 말하면 아마도 더 좋은 제안을 제시 할 수 있습니다. –

답변

0

syscolumns의 colorder 필드를 사용할 수 있습니다. 아래 예를 참조하십시오 :

declare @colindex int 
declare @colcount int 
declare @tableid int 
declare @colname varchar(100) 

set @tableid = (select id from sysobjects where name='name-of-table') 
set @colcount = (select COUNT(*) from syscolumns where id = @tableid) 

set @colindex = 1 
while @colindex <= @colcount 
begin 
    set @colname = (select name from syscolumns where id = @tableid and colorder = @colindex) 
    print @colname 
    set @colindex = @colindex + 1 
end 
+0

SQL Server에서는 시스템보기보다 메타 데이터 기능을 사용하는 것이 더 쉽습니다. 따라서 첫 번째 쿼리 대신 OBJECT_ID ('테이블 이름')를 사용하고 루프 내부의 쿼리 대신 COL_NAME (@tableid, @colindex)을 사용할 수 있습니다. –