Funktionen sind einfach in einer select-Schleife zu nennen, aber sie don‘ Sie können Einfügungen, Aktualisierungen, Löschungen usw. ausführen. Sie sind nur für Abfrageoperationen nützlich. Sie benötigen eine gespeicherte Prozedur, um die Daten zu bearbeiten.
Also die wirkliche Antwort auf diese Frage ist, dass Sie die Ergebnisse einer Select-Anweisung über einen "Cursor" durchlaufen und die Prozedur innerhalb dieser Schleife aufrufen müssen. Hier ein Beispiel:
DECLARE @myId int;
DECLARE @myName nvarchar(60);
DECLARE myCursor CURSOR FORWARD_ONLY FOR
SELECT Id, Name FROM SomeTable;
OPEN myCursor;
FETCH NEXT FROM myCursor INTO @myId, @myName;
WHILE @@FETCH_STATUS = 0 BEGIN
EXECUTE dbo.myCustomProcedure @myId, @myName;
FETCH NEXT FROM myCursor INTO @myId, @myName;
END;
CLOSE myCursor;
DEALLOCATE myCursor;
Beachten Sie, dass @@FETCH_STATUS
eine Standardgröße ist, die für Sie aktualisiert wird. Der Rest der Objektnamen ist hier benutzerdefiniert.
Sie sollten sich Funktionen ansehen, Sie können eine gespeicherte Prozedur nicht innerhalb einer Select-Abfrage aufrufen. – twoleggedhorse
select col1, col2, col3, EXEC GetAIntFromStoredProc (t.col1) als col4 FROM tbl als t wo (col2 = @parm) IST nicht auswählen col1, col2 FROM EXEC MyStoredProc 'param1', 'param2'. Dies ist kein Duplikat, versuchte Bearbeitung, wurde aber abgelehnt, die Antwort in diesem Beitrag ist korrekt – DooMMcQ