SQL Server Gespeicherte Prozedur, WENN Vorhanden Update Sonst Insert
Ich erstellt eine gespeicherte Prozedur lokal (WENN Vorhanden Update Sonst Insert)
Wenn ich die Prozedur auszuführen, kann es nicht einfügen oder aktualisieren von Daten, SQL-Server zeigt, dass die Abfrage erfolgreich ausgeführt.
Tabelle:
CREATE TABLE Laptops
(
Brand varchar(50),
Series varchar(50),
Model varchar(50),
Gener int,
Ram int,
HDD int,
Processor varchar(50),
Clock float,
Graphic_Chip varchar(50),
Graphic_Memory int,
Qty int,
Price int
PRIMARY KEY (Brand,Series,Model,Gener,Ram,HDD,Processor,Clock,Graphic_Chip,Graphic_Memory)
)
Gespeicherte Prozedur:
CREATE PROCEDURE Insert_Inventory
(
@Brand Varchar(50),
@Series Varchar(50),
@Model Varchar(50),
@Gener int,
@Ram int,
@HDD int,
@Processor Varchar(50),
@Clock float,
@Graphic_Chip Varchar(50),
@Graphic_Memory int,
@Qty int,
@Price int
)
AS
IF EXISTS (SELECT * FROM Laptops
WHERE Brand = @Brand
and Series = @Series
and Model = @Model
and Gener = @Gener
and ram = @Ram
and hdd = @HDD
and Processor = @Processor
and Clock = @Clock
and Graphic_Chip = @Graphic_Chip
and Graphic_Memory = @Graphic_Memory)
BEGIN
UPDATE Laptops
SET
Qty = Qty + @Qty,
Price = @Price
WHERE
Brand = @Brand
and Series = @Series
and Model = @Model
and Gener = @Gener
and ram = @Ram
and hdd = @HDD
and Processor = @Processor
and Clock = @Clock
and Graphic_Chip = @Graphic_Chip
and Graphic_Memory = @Graphic_Memory
END
ELSE
BEGIN
INSERT into Laptops
VALUES (@Brand, @Series, @Model, @Gener, @Ram, @HDD, @Processor, @Clock, @Graphic_Chip, @Graphic_Memory, @Qty, @Price)
END
Ausführen
exec Insert_Inventory 'Dell', 'Inspiron', '14', 3, 4, 500, 'Core_i_5', 2.7, 'NVIDIA', 512, 20, 42000
Es funktioniert bei mir: sqlfiddle.com/#!3/a34d0/2
InformationsquelleAutor Khurram Sharif | 2015-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie wickeln Sie Ihre SP in
BEGIN
&END
Sie fehlen. Und auch verwenden Sie 1, wenn Sie check -IF Exist
imSelect Statement
.Und überprüfen Sie auch, dass Einige der Transaktion ist offen, aber nicht verpflichten. Statt dies zu Tun, können Sie auch SQL-MERGE -, Update-und Insert-Anweisung.FYI - Eine oder mehrere Transact-SQL - - Anweisungen aus dem Körper des Verfahrens. Sie können mit dem optionalen BEGINNEN und ENDEN die Schlüsselwörter einschließen, die die Aussagen überprüfen, msdn.microsoft.com/en-us/library/ms187926.aspx für mehr info
Tatsächlich ist der original-code geschrieben von Khurram funktioniert. Die BEGIN-ENDE ist optional.
InformationsquelleAutor HaveNoDisplayName