Ich brauche Hilfe, um eine gespeicherte Prozedur mit Parametern zu erstellen, wenn der Wert für diesen Parameter übergeben, dann muss es in der Datenbank einfügen oder aktualisieren, sonst es sollte einen Standardwert von Null verwenden.Einfügen und Aktualisieren der gespeicherten Prozedur mit Parametern und Standard von Null funktioniert nicht
Mein Problem ist, dass, wenn ich den Code unten mit einem SampleID = 0
ausführen, es funktioniert ... jeder andere SampleID
tut nichts.
Vielen Dank im Voraus
Ausführung der gespeicherten Prozedur:
SET NOCOUNT OFF
EXEC SP_Samples '0', '3' ,'Pink'
GO
Stored Procedure Code:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_Samples]
(@SamplesID int,
@SamplesCategoriesID int,
@SamplesName nvarchar(50)
)
AS
BEGIN
SET NOCOUNT ON;
IF (@SamplesID = 0)
BEGIN
INSERT INTO tblSamples ([SamplesName], [SamplesCategoriesID])
VALUES (@SamplesName, @SamplesCategoriesID)
END
ELSE
BEGIN
UPDATE [tblSamples]
SET SamplesCategoriesID = @SamplesCategoriesID,
SamplesName = @SamplesName
WHERE SamplesID = @SamplesID
END
END
Sie ein paar Probleme haben. Zwei Parameter sind int, aber Sie übergeben Varchar-Werte. Verliere beim Anrufen die Anführungszeichen um die numerischen Parameterwerte herum. Wenn Sie einen Wert ungleich null übergeben, wird das Update ausgeführt. Ich bin mir sicher, dass es vollkommen in Ordnung ist. Welches Verhalten lässt dich denken, dass es nichts tut? Was ist dein Testfall? Haben Sie beispielsweise einen vorhandenen Datensatz mit 'SamplesID = 1 ', gegen den Sie testen können? –
Danke Nick, das Entfernen der Zitate hat den Trick ... der SP fügt jetzt Datensätze für Nicht-Null-IDs.danke für die Bearbeitung Code-Kopieren/Einfügen – FadielRas
Ich habe keine Ahnung, wie es das macht ... es trifft nur den Einsatz Code für Werte von 0 –