0

SQL Server 2016에서 저장 프로 시저 및 사용자 정의 테이블 반환 함수를 만들었습니다. 프로 시저와 함수를 모두 성공적으로 컴파일 할 수 있습니다.함수 내에서 함수 및 일부 확장 저장 프로 시저 만 실행할 수 있습니다.

Procedure Name: getAgentLogActivity
Function Name: sp_agent_log_activity

기능은 절차 getAgentLogActivity뿐만 아니라 Exec에서 sp_executesql을를 호출한다. 그래서 내가 함수를 선택 쿼리 아래에 실행하려고하면 오류가 발생합니다.

Error: Only functions and some extended stored procedures can be executed from within a function.

SELECT * FROM [dbo].[sp_agent_log_activity] 
('2017-02-01 00:00:00','2017-02-01 23:59:59',0,'','','','') 

프로 시저와 함수의 전체 코드는 아래의 위치에서 확인할 수있다.

Stored Procedure and User Define Table Valued Function

그것은 인포믹스에 시스코 UCCX 데이터베이스에서 코드, 코드에 배경을 제공합니다. SQL Server로 변환했습니다.

오류에 대한 해결 방법이 있으면 알려주십시오.

+0

아무도 github에서 코드를 다운로드하지 않습니다. 그러나 당신은 당신이 기능에서하려고하는 것을 할 수 없습니다. 저장 프로 시저에서이 작업을 수행 할 수 있지만 함수는 호출 프로 시저와 동적 SQL 실행을 허용하지 않습니다. –

+0

@SeanLange의 말. 또한 이미 질문 된 (답변 된) 질문을 살펴보십시오. http://stackoverflow.com/questions/6344880/execute-stored-procedure-from-a-function –

+0

코드를 다운로드 할 사람을 묻지 않습니다. 그것의 바로 그것의 매우 큰 100 라인은 프로 시저와 함수를위한 코드이므로 각각 거기에 보관했습니다. –

답변

1

가장 쉬운 해결 방법은 테이블 반환 함수를 저장 프로 시저로 변환하는 것입니다. 저장 프로 시저에는 다른 저장 프로 시저를 실행할 수없는 제한이 없습니다.

관련 문제