2016-11-25 3 views
0

전체 테이블 이름 (스키마 + 이름)을받는 저장 프로 시저가 있습니다. 그 테이블을 찾아 특정 열 'Clumn_Name'이 있는지 확인해야합니다. 참으로 True 또는 False로 설정되어 있는지 확인하고 이에 대한 몇 가지 조치를 취해야합니다.열 값이 있으면 어떻게 가져올 수 있습니까?

내가 MSSQL 2008 R2

답변

1

이 작동하지 않을 수 있습니다 사용하여 하나의 속임수입니다. 스키마와 테이블에 열이 있는지 확인하고 동적 열을 만들어 테이블에서 값을 선택합니다. 지금은 SQL 그냥 선택하고 'WHERE ID = 1'그래서 당신은 모든 행을 얻을하지 않습니다 설정합니다. 그냥 이걸 적응하고 결과와 함께 당신이 원하는대로 해 ..

DECLARE @schemaName varchar(1000) = '<enter correct schema name here>' 
DECLARE @tableName varchar(1000) = '<enter correct table name here>' 
DECLARE @columnName varchar(1000) = '<enter correct column name here>' 

IF EXISTS(
SELECT 1 
FROM sys.columns c 
    JOIN sys.tables t ON c.object_id = t.object_id 
    JOIN sys.schemas s ON s.schema_id = t.schema_id 
WHERE s.name = @schemaName 
AND t.name = @tableName 
AND c.name = @columnName 
) BEGIN 

    DECLARE @test nvarchar(1000); 
    DECLARE @sqlCommand nvarchar(1000) 
    SET @sqlCommand = 'SELECT TOP 1 @test = ' + @columnName + ' FROM ' + @schemaName + '.' + @tableName + ' WHERE ID = 1'; 
    EXECUTE sp_executesql @sqlCommand, N'@test nvarchar(1000) OUTPUT', @[email protected]; 

END; 
+0

고마워, 정확히 내가 뭘 필요합니다! 작은 노트 내가 작동하도록 실행 라인을 변경해야했습니다. N '@ test bit out', @test out – kresa

0

를 사용하고 여기에 Col_length

IF Col_length('scheme.Tablename', 'Column_Name') IS NOT NULL 
    SELECT 'True' 
ELSE 
    SELECT 'False' 
0
 
SELECT CASE WHEN COL_LENGTH('TABLE_NAME','COLUMN_NAME') IS NULL THEN 'FALSE' ELSE 'TRUE' END 
관련 문제