2010-12-09 6 views
1

i ont créé une fonction:avec mise à jour en utilisant la fonction scalaire

CREATE FUNCTION FindDistrictId (@param XML) 
RETURNS INT 
(...) 

que je veux utiliser dans une procédure stockée comme:

CREATE PROCEDURE UpdateDistinctID 
AS 
    UPDATE Notices SET DistinctId = FindDistrictId(Notices.XmlContent) 
    WHERE DistinctId = 0 

Je reçois « FIndDistrictId n'est pas un RECONNUES construit -in nom de la fonction 'quand j'essaye de faire cela. Je pensais que peut-être je ne peux pas faire Set field = function() mais ensuite j'ai vérifié here et je pense que cela devrait fonctionner .. aucune idée pourquoi ce n'est pas? La fonction est créée à coup sûr dans ma base de données, j'ai vérifié sys.object

Répondre

6

Vous devez inclure le schéma (propriétaire s'il s'agit de SQL 2000 ou version antérieure) de la fonction sur l'appel. Par défaut, ce serait dbo.

UPDATE Notices SET DistinctId = dbo.FindDistrictId(Notices.XmlContent) 
WHERE DistinctId = 0 
+0

j'essayer de faire cela, mais maintenant l'erreur est «ne peut pas trouver soit dbo colonne ou la fonction définie par l'utilisateur ou l'agrégat « dbo.FindDistrictID » ou le nom est ambigiuous. Cependant, ce code: @temp xml déclare défini @temp = (sélectionnez XmlContent de Avis où NoticeId = 25647) impression (dbo.FindDistrictId (@temp)) semble fonctionner ok – matt99

+1

mon erreur, semble fonctionner très bien avec votre modification, merci – matt99

Questions connexes