0
Die folgende gespeicherte Prozedur fügt eine neue Zeile korrekt ein aber gibt immer 0 für den Ausgabeparameter zurück. Was würde die neue Zeilen-ID zurückgeben?Scope_Identity() gibt immer 0 zurück
alter procedure DlogErr
@Msg varchar(100), @Cmd nvarchar(max),
@Stk varchar(200), @Pgm varchar(50),
@Lin smallint, @EID int, @UID int output
as
begin
set nocount on
insert into ErrorLog (Src, ErrMsg, Cmd, StackInfo, Itm, Pgm, Lin, ErrID)
values ('VFP', @Msg, @Cmd, @Stk, '', @Pgm, @Lin, @EID);
set @UID = Scope_Identity();
end
richtig funktioniert für mich. Hattest du eine Identitätsspalte in der Tabelle? – Harsh
Wenn Sie eine 'uniqueidentifier'-Spalte haben, der ein Standardwert von' NewId() 'zugewiesen wurde, dann sollten Sie ein [' OUTPUT'] verwenden (https://msdn.microsoft.com/en-us/library/ ms177564.aspx) -Klausel zum Abrufen von Daten aus den Zeilen (Note Plural.), z Identitätsspaltenwerte für neu eingefügte Zeilen. 'OUTPUT' kann mit' INSERT', 'UPDATE',' DELETE' und 'MERGE' verwendet werden und bietet Zugriff auf _before_ und _after_ Werte im Falle von 'UPDATE'. Ein Werkzeug, das es wert ist, in der Tasche zu haben. – HABO
Wie rufen Sie das Verfahren an? –