2012-01-16 3 views
4

테이블 값 함수에서 테이블 반환 스키마를 가져 오는 방법이 있습니까?테이블 값 함수에 대한 정보 얻기

지금 내가 하나의 아이디어,

SELECT ROUTINE_SCHEMA, 

    ROUTINE_NAME, 

    ROUTINE_DEFINITION 

FROM INFORMATION_SCHEMA.ROUTINES 

을 실행하고 함수 쿼리를 구문 분석해야하지만 그렇지 gread 생각이다. :/

답변

8

당신은 INFORMATION_SCHEMA.ROUTINE_COLUMNS

예로부터 정보를 얻을 수 있습니다

SELECT * 
FROM INFORMATION_SCHEMA.ROUTINE_COLUMNS 
WHERE TABLE_NAME = 'YourTableValuedFunctionName' 
0

여기 AdaTheDev의 접근 방식은 더 나은 미래 SQL 자료에 침입 가능성이 없습니다, 그냥 참고로 ... 이전 시스템 테이블을 사용하여 접근이다.

select so.name,sc.name,st.name,sc.length,sc.* 
from sysobjects so 
join syscolumns sc on sc.id=so.id 
join systypes st on st.xtype=sc.xtype 
where so.xtype='TF' and sc.name not like '@%' 
order by 1,colid 
0

information_schema.routines는 함수 자체에 대한 기본 정보를 얻는 데 가장 선호되는 방법입니다. AdaTheDev가 말했듯이, information_schema.routine_columns는 컬럼에 대한 정보를 얻는 가장 좋은 장소입니다.

시스템 테이블에서 정보를 파고들 수는 있지만 더 많은 노력이 필요하며 향후 릴리스에서는 변경되지 않는 시스템 테이블에 포함될 수 없습니다. 하지만 당신은 당신이 원 수 있다면 :

select * from sys.columns 
where object_id = object_id(N'fnc_Document_GetInfoByIndex') 

(이 예는 SQL 서버 2008입니다)