2012-10-11 4 views
3

다중 스칼라 테이블 반환 함수에서 저장 프로 시저를 호출하는 방법이 있습니까?다중 스칼라 테이블 반환 함수에서 저장 프로 시저를 호출 하시겠습니까?

참고 :

Invalid use of a side-effecting operator 'INSERT EXEC' within a function.

T-SQL 코드 :

CREATE FUNCTION fnCrSum 
(
@ay nvarchar(100), @yil nvarchar(4), @tip nvarchar(25) 
) 
RETURNS 
@tablo TABLE 
(
    id int, 
    ref_num int, 
    last_name nvarchar(200), 
    grup nvarchar(200), 
    analist nvarchar(200), 
    durum nvarchar(10), 
    start_dt int , 
    end_dt int, 
    duration int, 
    type nvarchar(10), 
    bildirim nvarchar(200) 
) 
AS 
BEGIN 
    DECLARE @exec NVARCHAR(250) 
    SET @exec = 'exec dbo.spCrSum ''' + @ay + ''', ''' + @yil + ''', ''' + @tip + '''' 
    INSERT INTO @tablo 
    exec (@exec) 

    RETURN 
END 
GO 

답변

0

당신은 함수에 저장 프로 시저를 실행할 수 없습니다이 쿼리는 오류를 반환합니다.

2

함수에 부작용이있을 수 없으므로 데이터를 변경할 수 없습니다.

저장 프로 시저가 아무 것도 변경하지 않더라도 SQL 컴파일러는이를 가정 할 수 없으므로 허용하지 않습니다.

왜 이것을 함수로 묶어야합니까?

+0

Business Objects Designer에는 기술적 인 문제가 있으므로 – juniorDev

0

이 문제가 해결되었습니다. 실행 가능한 쿼리를 포함하여 테이블 반환 함수를 작성하고 테이블을 반환하고 매개 변수 전달 함수를 호출하는 저장 프로 시저를 준비했습니다. 그것은 나를 위해 작동합니다.

관련 문제