변수에 있어야하는 테이블에서 select를 수행하려고합니다. 나는 응용 프로그램에서 동적으로 생성 된 테이블에 대해 작업하고 있습니다. 테이블의 이름은 CMDB_CI_XXX이며, 여기서 XXX는 다른 테이블의 값을 기반으로하는 정수 값입니다. 궁극적 인 목표는 테이블에서 CI 이름을 얻는 것입니다.TSQL : 함수의 변수에서 테이블 사용
테이블 이름을 구성하는 조각을 함수에 전달하고 함께 끈 다음 이름 값을 반환하려고 시도했지만 함수에서 EXEC 문을 사용할 수 없습니다.
: 이것은 이름 값을 얻을 수있는 기능을 사용하려는 SP의 코드가Select [Name] from 'CMDB_CI_' + C.CI_TYPE_ID + Where CI_ID = c.CI_ID
입니다 :
이
내가 다시 이름 값을 얻기 위해 실행하고자하는 것입니다SELECT
CI_ID,
C.CI_TYPE_ID,
CI_CUSTOM_ID,
STATUS,
CI_TYPE_NAME,
--(Select [Name] from CMDB_CI_ + C.CI_TYPE_ID + Where CI_ID = c.CI_ID)
FROM [footprints].[dbo].[CMDB50_CI_COMMON] c
join [footprints].[dbo].[CMDB50_CI_TYPE] t
on c.CI_TYPE_ID = t.CI_TYPE_ID
where status <> 'retired'
order by CI_TYPE_NAME
나는 이것을 어떻게 처리해야할지 모르겠다. 도와주세요?
감사합니다, 제니퍼
와우,이 나쁜 소리, 응용 프로그램에서 동적으로 생성 된 테이블 이유 - 그들은 3 자에 다를 경우 CMDB_CI''라는 이름의 테이블과 코드를 저장하는 긴 3 자하는 열의가 있어야는 . SQL에서 테이블을 동적으로 생성하고 싶지는 않습니다. SQL Server, DB2, Oracle, mySQL 또는 Progress 등 어떤 플랫폼을 사용하고 있습니까? – Hogan
SQL 쿼리에서 테이블을 매개 변수화 할 수 없습니다. 그리고 나는 @Hogan에 동의합니다. 여러분이 실제로 쿼리 할 수있는 데이터를 테이블 이름에 포함시켜 버린 것처럼 보입니다. 이는 데이터와 메타 데이터가 혼란 스럽습니다. –
SQL Server 2008을 사용하고 있습니다. 응용 프로그램을 지원 팀에 요청하여 왜 이렇게 설정했는지, 그리고 테이블에 특성이 설정되어 있고 각 유형마다 다른 특성을 가질 수 있으므로 열 이름이 다를 수 있다고 들었습니다. 각 속성. 하나는 열 이름이 "Color"이고 다른 하나는 "SerialNumber"일 수 있습니다. 그러나 나는 너에게 전적으로 동의한다. 나는 그것을 매우 다르게 설정했을 것이다. – Jennifer