2010-12-09 26 views
1

Ich habe eine Funktion erstellt:Problem mit Update mit Skalarfunktion

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

, die ich wie in einer gespeicherten Prozedur verwenden möchten:

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

ich ‚FIndDistrictId ist kein gebaut anerkannt -in Funktionsname 'wenn ich das versuche. Ich dachte, dass ich vielleicht Set field = function() nicht tun kann, aber dann überprüfte ich here und ich denke, dass es funktionieren sollte. Irgendeine Idee, warum es nicht ist? Die Funktion wird für sicher im my db erstellt, ich überprüft sys.object

Antwort

6

Sie müssen das Schema (Besitzer, wenn dies SQL 2000 oder früher ist) der Funktion für den Aufruf enthalten. Standardmäßig wäre das dbo.

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

ich versuche zu tun, dass, aber jetzt wird der Fehler ‚kann nicht entweder Spalte dbo oder die benutzerdefinierte Funktion oder Aggregat‚dbo.FindDistrictID‘oder den Namen ist ambigiuous finden‘. Doch dieser Code: declare @temp xml gesetzt @temp = (xmlcontent von Mitteilungen wählen, wo NoticeId = 25647) print (dbo.FindDistrictId (@temp)) scheint ok – matt99

+1

meine Fehler zu arbeiten, scheint mit zu funktionieren Ihre Änderung, danke – matt99