2010-11-26 22 views
0

La résolution de nom réellement différée concerne les tables dans les procédures stockées. Mais j'ai noté que parfois je peux créer UDF qui se réfère à UDF inexistant, dans d'autres cas, je ne peux pas. Je n'ai trouvé aucune mention lorsque des noms UDF non existants sont autorisés et quand ils ne le sont pas.Résolution de nom différée dans UDF

Il ne dépend pas du type UDF (scalaire/table-évalué). On dirait que si UDF renvoie XML, il n'autorise pas les références à des UDF inexistantes.

Donc je suis un peu confus. Y a-t-il des règles?

P.S. Ces vues n'ont pas été liées au schéma, non SCHEMABINDING

+1

Je peux certainement créer des UDF référençant des tables et des UDF inexistantes, qui renvoient du XML, sans aucun avertissement, donc je pense que ce bit est un faux-fuyant. Pourriez-vous essayer et poster quelques échantillons (de préférence petits) de ceux qui fonctionnent et ceux qui ne le font pas. –

Répondre

2

La raison évidente pour laquelle la résolution de noms différée ne fonctionnerait pas est si la fonction est créée avec l'option "WITH SCHEMABINDING". Étant donné que cette option provoque des entrées dans les tables système, de sorte que vous ne pouvez pas supprimer les objets dont la fonction dépend, elle échouera si l'objet dépendant n'existe pas.

+0

+1. Bien sûr, cela rend la vie "compliquée" pour les ALTER qui seraient la plainte habituelle. Nous l'utilisons toujours – gbn