0

J'ai la fonction Table stockée de procédure stockée et définie par l'utilisateur créée dans SQL Server 2016. Je suis capable de compiler à la fois la procédure et la fonction.Seules les fonctions et certaines procédures stockées étendues peuvent être exécutées à partir d'une fonction.

Procedure Name: getAgentLogActivity
Function Name: sp_agent_log_activity

Fonction appelle la procédure getAgentLogActivity ainsi que Exec sp_executesql. Donc, quand j'essaie de courir ci-dessous sélectionnez une requête sur la fonction, je reçois une erreur.

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,'','','','') 

Le code complet pour la procédure stockée et la fonction se trouvent en dessous de l'emplacement.

Stored Procedure and User Define Table Valued Function

Pour donner fond sur le code, il est un code de base de données Cisco UCCX qui est en Informix. Je l'ai converti en SQL Server.

S'il vous plaît laissez-moi savoir si il y a un travail autour de l'erreur.

+0

Personne ne va aller télécharger votre code de github. Mais vous ne pouvez pas faire ce que vous essayez de faire dans une fonction. Vous pouvez le faire dans une procédure stockée mais les fonctions n'autorisent pas les procédures d'appel et l'exécution de SQL dynamique. –

+0

Qu'est-ce que @SeanLange a dit. Aussi, jetez un oeil à la question déjà posée (et répondu): http://stackoverflow.com/questions/6344880/execute-stored-procedure-from-a-function –

+0

Eh bien, je ne demande à personne de télécharger le code. C'est juste que c'est un très gros code de 100 lignes pour la procédure et la fonction, donc je l'ai gardé là. –

Répondre

1

La solution de contournement la plus simple consiste à transformer votre fonction de table en une procédure stockée. Les procédures stockées n'ont pas la limitation de ne pas pouvoir exécuter une autre procédure stockée.