pyromelana 10 Geschrieben 30. Mai 2011 Melden Teilen Geschrieben 30. Mai 2011 Hallo Zusammen, ich steh voll auf dem Schlauch und werde auch nicht mithilfe meines sonst so schlauen Buches fertig mit dem Problem. ich habe eine ASP.NET Webanwendung, welche eine Sicht (bestehend aus 2 Tabellen) abbildet. In dieser Webanwendung kann ich / möchte ich einen Update-Befehl integrieren. Soweit kein Problem. Meine Prozedur macht nur nicht ganz das, was sie machen soll - Prozedur daher, weil ich ja auf 2 Tabellen gleichzeitig zugreife.... also: Problem ist, dass die Prozedur alle Felder auf NULL setzt, wenn ich keine neuen Werte mitgebe... mache ich das Update nur für z.B. das Feld Telefon (mit neuer Nummer), soll nur dieses Feld ein Update erfahren, die Werte/Daten der anderen Felder sollen einfach erhalten bleiben... Ich hoffe, Ihr könnt mir kurz auf die Sprünge helfen.... GO /****** Objekt: StoredProcedure [dbo].[support] Skriptdatum: 05/27/2011 10:28:11 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= ALTER PROCEDURE [dbo].[support] -- Add the parameters for the stored procedure here @liefnr as char(10) AS BEGIN SET NOCOUNT ON; DECLARE @NAME1 char(50) DECLARE @NAME2 char(50) DECLARE @STR char(50) DECLARE @PLZ char(8) DECLARE @LAND char(3) DECLARE @ORT char(3) DECLARE @TELEFON char(25) DECLARE @QZERT_TEXT varchar(50) DECLARE @ANREDE_ADR char(50) DECLARE @VORNAME char(25) DECLARE @NAME char(25) DECLARE @TELEFON_1 char(25) DECLARE @TELEFON_2 char(25) DECLARE @TELEFAX char(25) -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. -- Insert statements for procedure here BEGIN update ylie0015 set ylie0015.Name1 = @NAME1, dbo.YLIE0015.NAME2 = @name2,dbo.YLIE0015.STR = @STR,dbo.YLIE0015.PLZ = @PLZ, dbo.YLIE0015.LAND = @LAND, dbo.YLIE0015.ORT = @ORT, dbo.YLIE0015.TELEFON = @TELEFON, dbo.YLIE0015.QZERT_TEXT = @QZERT_TEXT from ylie0015 where ylie0015.liefnr = @liefnr update ylie0016 set dbo.YLIE0016.ANREDE_ADR = @ANREDE_ADR, dbo.YLIE0016.VORNAME = @VORNAME, ylie0016.Name = @NAME, dbo.YLIE0016.TELEFON_1 = @TELEFON_1, dbo.YLIE0016.TELEFON_2 = @TELEFON_2, dbo.YLIE0016.TELEFAX = @TELEFAX from ylie0016 where ylie0016.liefnr = @liefnr END END Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 30. Mai 2011 Melden Teilen Geschrieben 30. Mai 2011 Ich würde sagen, da müsste jedes Feld einzeln bearbeitet werden. So in der Art... IF (@NAME1 IS NOT NULL) THEN update ylie0015 set ylie0015.Name1 = @NAME1 where ylie0015.liefnr = @liefnr IF (@NAME2 IS NOT NULL) THEN update ylie0015 set ylie0015.Name2 = @NAME2 where ylie0015.liefnr = @liefnr ... Zitieren Link zu diesem Kommentar
pyromelana 10 Geschrieben 30. Mai 2011 Autor Melden Teilen Geschrieben 30. Mai 2011 mmmh.... schonmal ein Ansatz. Zitieren Link zu diesem Kommentar
pyromelana 10 Geschrieben 30. Mai 2011 Autor Melden Teilen Geschrieben 30. Mai 2011 ach ja, @Cybquest ... im Transact SQL brauchst Du kein "Then" Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 30. Mai 2011 Melden Teilen Geschrieben 30. Mai 2011 OK, sorry. War einfach aus'm Bauch raus, daher "So in der Art..." ;) Zitieren Link zu diesem Kommentar
pyromelana 10 Geschrieben 30. Mai 2011 Autor Melden Teilen Geschrieben 30. Mai 2011 (bearbeitet) und damit wir auf des Rätsels Lösung kommen, hier mal der komplette funktionierende Quellcode. Allerdings lag es nicht am "falschen" SQL, sondern an 3 zuviel übergebenen Parametern USE [sAP R/3] GO /****** Objekt: StoredProcedure [dbo].[support] Skriptdatum: 05/30/2011 14:17:35 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= ALTER PROCEDURE [dbo].[support] -- Add the parameters for the stored procedure here @liefnr as char(10), @NAME1 as char(50), @NAME2 as char(50), @STR as char(50), @PLZ as char(8), @LAND as char(3), @ORT as char(3), @TELEFON as char(25), @QZERT_TEXT as varchar(50), @ANREDE_ADR as char(50), @VORNAME as char(25), @NAME as char(25), @TELEFON_1 as char(25), @TELEFON_2 as char(25), @TELEFAX as char(25) AS BEGIN SET NOCOUNT ON; -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. -- Insert statements for procedure here BEGIN --update ylie0015 update ylie0015 set ylie0015.Name1 = @NAME1, ylie0015.Name2 = @NAME2, ylie0015.[sTR] = @STR, ylie0015.PLZ = @PLZ, ylie0015.LAND = @LAND, ylie0015.ORT = @ORT, ylie0015.TELEFON = @TELEFON, ylie0015.QZERT_TEXT = @QZERT_TEXT where ylie0015.liefnr = @liefnr --update ylie0016 update ylie0016 set ylie0016.ANREDE_ADR = @ANREDE_ADR, ylie0016.VORNAME = @VORNAME, ylie0016.Name = @Name, ylie0016.TELEFON_1 = @TELEFON_1 where ylie0016.liefnr = @liefnr END END bearbeitet 30. Mai 2011 von pyromelana Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.