hallo, ich hätte zwei fragen an die experten:
1.) ich muss daten aus sql-servern (ich muss mehrere unterstützen, zumindest mssql, oracle, postgres, mysql5+ und andere gängige) auslesen und im XML format weiterverwerten. für kleine datensätze habe ich eine funktion geschrieben, die je nach datenbank mit concat oder + einen string zusammensetzt, also in etwa (ausm kopf):
[MS SQL]
CREATE FUNCTION GetXml() RETURNS VARCHAR(4000) AS
BEGIN
DECLARE @output AS VARCHAR(4000)
SELECT @output = @output + „“ + col1 + „“ FROM table1
RETURN @output
END
natürlich scheitert diese funktion am 8000er limit des ms sql servers und sowieso am 4000er limit von oracle. text und varbinary typen können ja leider nicht in funktionen verwendet werden. im moment frage ich daher ein recordset ab und füge die einzelnen records in c++ zusammen, was allerdings je nach datenbank bei mehreren tausend datensätzen einige sekunden dauern kann.
-> frage: wäre es sinnvoll und performant, einen temporären table mit einem text/ntext oder binary column zu erstellen, den xml string hineinzuschreiben und danach auszulesen?
2.) eine website greift über mehrere seiten auf eine relationale datenbank zu. änderungen in einem datensatz sollten erst bei betätigen eines „speichern“-buttons gespeichert werden. mir hätte da gefallen, eine transaktion zu starten, alle änderungen zu machen und beim klick auf „speichern“ die transaktion zu bestätigen (bzw rollback bei nichtspeichern).
-> problem: die website kann in der zwischenzeit nicht weiter auf die daten zugreifen. gibt es dafür irgendeine lösung in SQL oder muss ich die änderungen in meinem programm zwischenlagern und erst am schluss an die DB schicken=