Question

J'utilise SQL Server 2008.

Je veux exécuter un ALTER sur une fonction récursive. L'alter ajoute des paramètres, il semble étouffer sur ce point.

La fonction n'a pas de dépendances pour que je puisse faire en toute sécurité un DROP + CREER, mais ce qui doit être fait lorsque la fonction a des dépendances?

Le message d'erreur est celui-ci

Msg 8144, niveau 16, état 2, serveur TESTSERVER, Procédure fn_IsOwnerFunction, Ligne 177 Procédure ou dbo.fn_IsOwnerFunction fonction a trop d'arguments spécifiés.

Le message apparaît quelques fois, chaque fois pour une ligne où la fonction se réfère à lui-même. Note: il fait référence à sa nouvelle version qui a plus de paramètres. Après DROP + CREER, le script fonctionne sans erreurs ALTER.

Était-ce utile?

La solution

Il est autorisé à déposer une fonction qui est utilisé à partir d'autres fonctions ou procédures stockées. Bien sûr, une fois que vous laissez tomber / créer la fonction que vous devez modifier les fonctions et les procédures stockées qui utilise la fonction d'ajouter les nouveaux paramètres.

Autres conseils

Si l'erreur est « trop d'arguments spécifiés », votre code d'appel passe trop de paramètres. Cela pourrait signifier que l'instruction ALTER FONCTION vous avez exécuté plus tôt n'a pas traité en fait pleinement. Cela pourrait être à cause d'une erreur de syntaxe ou quelque chose de similaire. Exécutez le nouveau déclaration Alter et vérifiez le message d'erreur là.

EDIT:

Ajoutez une instruction DROP FUNCTION avant votre instruction CREATE FONCTION:

if exists (select * from information_schema.routines Where routine_name = 'udf_FunctionName') 
drop function udf_FunctionName
GO

CREATE FUNCTION [dbo].[udf_FunctionName]

... 
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top