해결되지 않는 사용자정의 함수 구현이 생겨서... 또 다시 문의를 드립니다. 


테이블 반환 함수는 뷰를 대신해서 Table Data 형식을 반환하는데...


반환 함수는 inline 과  MultiStatement 두가지 형식으로 구분되지요....


일단 제가 구현하고 싶은 내용의 샘플링을 해보면...


테이블명과 출력할 row 수를 입력 받아서 테이블 형태로 return 하는 것이 가장 적절한 샘플이 될 것 같습니다.


컬럼수가 고정되어 있다면 MultiStatement 형태로 return될 Table의 컬럼 형태를 지정해서 하면 되지만...


조회할 테이블마다 컬럼의 수와 컬럼명이 모두 다르다고 가정했을때 MultiStatement로는 지정이 불가하여


Inline 형태로 하려고 합니다.


컬럼명은 DBA_TAB_COLUMNS 에서 조회해서 Cursor를 돌려서 Query를 만드어 Varchar 변수에 담았다가


Return하려고 하는 생각을 하고 있습니다.


사용자 입장에서는 SELECT * FROM FN_SELECT_TABLE('TMP_TABLE', 100) 이라고 조회를 하면...


100개의 Row가 조회를 되는 형태를 예제라고 할 수 있습니다.


문제는 'TMP_TABLE' 에 해당하는 테이블 컬럼이 테이블마다 다르기 때문에 MultiStatement 형태로 Return Table 의 형태를


지정할 수 없다는게 문제입니다.


요약하면 아래와 같습니다.




1. 파라미터로 테이블명과 추출 row 수를 입력 받는다.


    CREATE FUNCTION [dbo].[FN_SELECT_TABLE]

(

    @I_TABLE_NAME VARCHAR(100), -- 조회할 테이블명

    @I_ROW_CNT      INT -- 조회할 ROW COUNT (0 인경우 전체)

)



2. 전달받은 테이블명을 DBA_TAB_COLUMNS 에서 조회하여 컬럼명을 조회한다.


SELECT COLUMN_NAME FROM DBA_TAB_COLUMNS WHERE TABLE_NAME = @I_TABLE_NAME



3. 조회된 COLUMN_NAME 의 수만큼 CURSOR를 돌려서 임시 VARCHAR 변수에 저장한다.


@TMP_SQL = 'SELECT TOP ' + @I_ROW_CNT 

--LOOP 시작

@TMP_SQL = @TMP_SQL + COLUMN_NAME + ','

--LOOP 종료

@TMP_SQL = @TMP_SQL + ' FROM ' + @I_TABLE_NAME



4. 동적으로 생성된 쿼리(@TMP_SQL)를 실행해서 TABLE 형태로 RETURN  한다.



대략적인 샘플링은 이렇습니다.


고수님들의 지도편달 부탁드립니다. ^^;


No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 1215
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 1690
10437 sql 조회오차 왜생기는건가요? ㅠㅠ [4] Zaki 2019.01.28 902
10436 중복 Data 중 가장 최근 날짜의 Data 만 불러오는 방법 [1] 김다빈 2019.01.27 1414
10435 데이터 정렬 [4] scsheva 2019.01.24 1061
10434 ms sql 서버 권한 설정 질문 드립니다. [2] 식뽕 2019.01.24 629
10433 뉴비입니다..! 안녕하세요 대량 UPDATE 질문드립니다. [4] 호키포키 2019.01.23 733
10432 mdf파일 깨졌을때 복부 방법 문의드립니다. [2] nico2 2019.01.22 990
10431 MASTER DB 복원 문의 sh17 2019.01.22 960
10430 데이터 배열 관련 질문입니다.ㅠ [2] scsheva 2019.01.21 773
10429 sql 암호 자동으로 변경이 되네요 뉴곰이 2019.01.20 736
10428 쿼리 암호화 질문입니다. [3] 희망나라 2019.01.17 850
10427 SQL Server always on 개념이 어떻게 되나요...ㅠㅠ? [1] Mase 2019.01.16 853
10426 통계쿼리 관련 질문 있습니다. [2] 아잉옹 2019.01.16 1183
10425 안녕하세요 SQL Server 튜닝 관련 질문입니다. [7] 앙버터 2019.01.15 892
10424 디비 복원시.. 내부 작업 수행중 불일치 냥냥 2019.01.14 1107
10423 통계 쿼리 질문요 [1] zofarnim 2019.01.12 902
10422 데이터 누계 질문 [5] swimtor 2019.01.12 788
10421 AWS RDS에 DB이전 embster 2019.01.10 616
» 테이블 반환 함수 동적쿼리 방법 문의 드립니다. [2] 난나야78 2019.01.10 1973
10419 쿼리 질문드립니다. [3] 아잉옹 2019.01.09 759
10418 mssql2017 구성관리자질문 [2] 마술 2019.01.09 927





XE Login