Antibiotik Geschrieben 4. Juli 2006 Geschrieben 4. Juli 2006 Hallo zusammen, hab bei einem SP ein Problem. Mein SP bekommt als Parameter ein XML mit allen Werten. Der SP muss eine Tabelle Update, allerdings mit der Bedingung, wenn das übergebene Datum kleiner als heute ist, muss eine zusätzlich Spalte (Status) upgedatet werden. Frage: Wie mache ich des mit IF und den Zugriff auf XML Werte? DECLARE @idoc INT EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlData UPDATE tbContracts SET Price = XMLp.Price, ContractBegin = XMLp.BeginDate, ContractEnd = XMLp.EndDate FROM OPENXML(@idoc, '/ROOT/Contract') WITH ( ContractID int, BeginDate smalldatetime, EndDate smalldatetime, Price money ) XMLp WHERE (ID=XMLp.ContractID) IF (XMLp.EndDate < GetDate()) BEGIN UPDATE tbContracts SET StatusID=2 WHERE (ID=XMLp.ContractID) END EXEC sp_xml_removedocument @idoc Lasse ich den IF Block weg, funktioniert mein SP, sonst gibts Probleme beim ausführen auf die DB. Danke Gruß Antibiotik
isardor Geschrieben 4. Juli 2006 Geschrieben 4. Juli 2006 Vielleicht so? DECLARE @idoc INT EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlData GO EXEC 'UPDATE tbContracts SET Price ='+ XMLp.Price+', ContractBegin ='+ XMLp.BeginDate+', ContractEnd ='+ XMLp.EndDate+', '+ IF (XMLp.EndDate < GetDate())+ 'StatusID=2 ' + End IF+ 'FROM OPENXML('+@idoc+', '/ROOT/Contract') WITH ( ContractID int, BeginDate smalldatetime, EndDate smalldatetime, Price money ) XMLp WHERE (ID='+XMLp.ContractID+')' GO EXEC sp_xml_removedocument @idoc[/PHP]
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden