데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

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


테이블 반환 함수는 뷰를 대신해서 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
» 테이블 반환 함수 동적쿼리 방법 문의 드립니다. [2] 난나야78 2019.01.10 1321
10419 쿼리 질문드립니다. [3] 아잉옹 2019.01.09 690
10418 mssql2017 구성관리자질문 [2] 마술 2019.01.09 862
10417 PK, FK 를 설정하지 않는다면? [2] 이유진_301818 2019.01.09 692
10416 각각 컬럼마다 해당값을 가지고 있는 것들의 갯수를 뽑아내고 싶은데 [1] 카루카루 2019.01.08 637
10415 ▶ SQL 초보 쿼리 질문드립니다 [1] ㅇBGT051 2019.01.08 785
10414 특정테이블이 들어간 sp모두 조회하는 방법이 궁금합니다. [4] 아싸라비아콜롬비아 2019.01.07 765
10413 table 반환 함수 파라미터 유효성 확인 문의 [7] 난나야78 2019.01.04 639
10412 저장 프로시저에서 sp_executesql 관련 문의 드립니다. [1] 로티보이 2019.01.03 668
10411 프로시저 내 세미콜론 관련 문의 드립니다. [3] 김삐씨 2019.01.03 810
10410 OLEDB 연결문제 문의드립니다. [2] 나방 2019.01.02 644
10409 쿼리 질문좀 드리겠습니다. [1] 마이스타 2018.12.30 571
10408 컬럼값 비교 삽입 [5] 배움자세 2018.12.29 626
10407 union 뭐가 문제인지요..? [1] 슈토파이터 2018.12.28 800
10406 특정 컬럼에 특수문자가 들어간거만 찾는 방법이 있을까요? [1] neiyan 2018.12.28 595
10405 sql 초보 질문요 [1] YHS 2018.12.27 713
10404 mssql 행이 null이면 다음 값 조회 [2] 전람회 2018.12.27 820
10403 두가지 질문을 드립니다... [3] 슈토파이터 2018.12.26 696
10402 WHILE 문 관련질문.. [1] 후알유? 2018.12.24 537
10401 전체백업할 때 데이터 중복저장 되는 문제 [1] 팔개 2018.12.21 623





XE Login