복붙노트

[SQL] SQL Server 2008의 절 '에서'테이블 이름에 대한 변수를 사용하여

SQL

SQL Server 2008의 절 '에서'테이블 이름에 대한 변수를 사용하여

나는 UDF가 그 테이블 중 쿼리 데이터. 표는, 그러나, 매개 변수로 정의 할 필요가있다. 예를 들어 내가 가질 수 없습니다 :

[DBO]에서 선택 *. [표]

내가 좋아하는 뭔가가 필요 :

SELECT * FROM [DBO]. [@ TABLENAME]

위의 라인이 작동하지 않습니다, 또한 UDF는 간부를 문자열로 쿼리를 설정하고 전화에서 저를 금지한다 (). 나는 과정에서이 작업을 수행 할 수 있습니다,하지만 난 어느 UDF에서 프로 시저를 호출 할 수 없습니다.

누구 알고 나는 거대한 스위치 문의 어떤 종류를하지 않고 UDF 내에서이 작업을 수행 할 수 있는가하는 방법?

해결법

  1. ==============================

    1.이 할 수없는이, 동적 SQL 함수에서 지원되지 않습니다.

    이 할 수없는이, 동적 SQL 함수에서 지원되지 않습니다.

    이 SO 질문을 참조하십시오 : 의 SQLServer 2005 함수에서 동적 SQL을 실행

  2. ==============================

    2.

    SET @SQL = 'SELECT * FROM ' + @table
    EXEC (@SQL)  -- parentheses are required
    
  3. ==============================

    3.당신은 당신의 테이블 UNION ALL을 할 수 있고 열로 테이블 이름을 포함,이 이상의 술어로 테이블 이름을 지정합니다. 이 예를 들어 쿼리 계획을 선택하면 해당 T2 터치되지 않은 참조

    당신은 당신의 테이블 UNION ALL을 할 수 있고 열로 테이블 이름을 포함,이 이상의 술어로 테이블 이름을 지정합니다. 이 예를 들어 쿼리 계획을 선택하면 해당 T2 터치되지 않은 참조

    create table t1 (i int)
    create table t2 (i int)
    
    insert t1 values(1)
    insert t1 values(2)
    insert t1 values(3)
    insert t2 values(4)
    insert t2 values(5)
    insert t2 values(6)
    
    
    ;with tableSet as (
        select i, 't1' as tableName from t1
        union all select i, 't2' as tableName from t2
    )
    select i from tableSet where tableName = 't1'
    
  4. ==============================

    4.당신은 동적 SQL을 할 수있는 UDF의 CLR을 쓸 수 있습니다. 나는 전에를 구현 했어. 그것은 꽤 빠르입니다.

    당신은 동적 SQL을 할 수있는 UDF의 CLR을 쓸 수 있습니다. 나는 전에를 구현 했어. 그것은 꽤 빠르입니다.

  5. ==============================

    5.넌 못해. 당신이 해결하는 어떤 문제, 다른 솔루션이있을 수 있습니다.

    넌 못해. 당신이 해결하는 어떤 문제, 다른 솔루션이있을 수 있습니다.

  6. ==============================

    6.당신은 당신이 해결하려고하는 것을 기본 문제에 대한 자세한 내용을 제공 할 경우, 우리는 더 나은 답변을 할 수도 있습니다. 한 가지 해결책은 테이블 단위로 UDF를 생성하는 코드입니다. 또 다른는 SP에서 동적 SQL을 사용하는 것입니다. 어떤 상황에 적합한 것은 말할 필요도 어렵다.

    당신은 당신이 해결하려고하는 것을 기본 문제에 대한 자세한 내용을 제공 할 경우, 우리는 더 나은 답변을 할 수도 있습니다. 한 가지 해결책은 테이블 단위로 UDF를 생성하는 코드입니다. 또 다른는 SP에서 동적 SQL을 사용하는 것입니다. 어떤 상황에 적합한 것은 말할 필요도 어렵다.

  7. from https://stackoverflow.com/questions/988610/using-a-variable-for-table-name-in-from-clause-in-sql-server-2008 by cc-by-sa and MIT license