Antibiotik Geschrieben 4. Juli 2006 Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
isardor Geschrieben 4. Juli 2006 Teilen 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.