Veröffentlicht 4. Juli 200619 j 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
4. Juli 200619 j 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]
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.