Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

update

Empfohlene Antworten

Veröffentlicht

Ich update eine Tabelle, das ganze mache ich mit einem cursor es funktionier auch ist nur sehr sehr langsam,

kann ich es vielleicht auch auf eine andere weise lösen, hier cod


declare @ma int,@mo int,@abr int,@p int
set @ma = 2
set @mo = 1224
set @abr = 300200013
set @p = 230719
declare upd_cursor cursor
for select ma,mo,abr,p from Tabel
where ma=@ma and mo=@mo and abr=@abr and p=@p
open upd_cursor
fetch next from upd_cursor
into @ma,@mo ,@abr ,@p
while @@fetch_status = 0
begin


UPDATE [Tabel]
SET [xyz]=111 WHERE [Ma]= @ma and [Mo]= @mo and [Abr]= @abr and [P]= @p

fetch next from upd_cursor
into @ma,@mo ,@abr ,@p

end
[/PHP]

Vielen Dank

Och 007ski...

Gewöhn dir doch mal an, das du dazuschreibst welche Datenbank du meinst. Bei jedem Thread von dir muß erst nachgefragt werden. :( Siehe auch hier: http://www.fachinformatiker-world.de/forums/announcement.php?s=&forumid=18&announcementid=14

Ich weiß, das du den Microsoft SQL Server 2000 meinst, weil ich hier sowieso alles lese, bei anderen ist das vielleicht der erste Thread den sie von dir lesen.

  • Autor
Original geschrieben von Wolle

Och 007ski...

Gewöhn dir doch mal an, das du dazuschreibst welche Datenbank du meinst. Bei jedem Thread von dir muß erst nachgefragt werden. :( Siehe auch hier: http://www.fachinformatiker-world.de/forums/announcement.php?s=&forumid=18&announcementid=14

Ich weiß, das du den Microsoft SQL Server 2000 meinst, weil ich hier sowieso alles lese, bei anderen ist das vielleicht der erste Thread den sie von dir lesen.

SORRY :eek:

es tut mir wirklich leid, aber glaube mir ich arbeite dran :rolleyes:

und ja es ist Microsoft SQL Server 2000

Hallo 007ski,

ich hab zwar noch nichts mit PHP gemacht, aber meinen SQL-Kenntnissen zufolge kannst du den ganzen Cursor weglassen und einfach einmal das Update-Statement ausführen, das würde glaub ich schon reichen...

Versuchs doch mal.

Gruß, Axl

Original geschrieben von AxlHammer

Hallo 007ski,

ich hab zwar noch nichts mit PHP gemacht, aber meinen SQL-Kenntnissen zufolge kannst du den ganzen Cursor weglassen und einfach einmal das Update-Statement ausführen, das würde glaub ich schon reichen...

Versuchs doch mal.

Gruß, Axl

Ähm - mit PHP hat das auch nix zu tun... - das ganze ist nämlich Transact SQL und so ein Cursor wird meistens verwendet, um durch eine Datenmenge durchzugehen und für jeden Datensatz bestimmte Aufgaben zu erledigen...

Allerdings haste recht, ich sehe hier auch keinen Grund, einen Cursor zu verwenden... - aber warum einfach, wenn's auch kompliziert geht ;)...

  • Autor
Original geschrieben von beetFreeQ

Allerdings haste recht, ich sehe hier auch keinen Grund, einen Cursor zu verwenden... - aber warum einfach, wenn's auch kompliziert geht ;)...

kannst Du bitte auch vieleich die einfache Methode verraten

Allerdinks müß ich dazu eine korektur des codes machen


declare @ma int,@mo int,@abr int,@p int
set @ma = 2
set @mo = 1224
declare upd_cursor cursor
for select ma,mo,abr,p from Tabel
where ma=@ma and mo=@mo and abr=@abr and p=@p
open upd_cursor
fetch next from upd_cursor
into @ma,@mo ,@abr ,@p
while @@fetch_status = 0
begin

/*
hier wird aber noch eine SP aufgerufen die mir einen wert lierert bzw berechnet @wert
der für jeden @p und @abr anderes ist
*/
UPDATE [Tabel]
SET [xyz]=@wert WHERE [Ma]= @ma and [Mo]= @mo and [Abr]= @abr and [P]= @p

fetch next from upd_cursor
into @ma,@mo ,@abr ,@p

end
[/PHP]

Original geschrieben von 007ski

kannst Du bitte auch vieleich die einfache Methode verraten

Allerdinks müß ich dazu eine korektur des codes machen


declare @ma int,@mo int,@abr int,@p int
set @ma = 2
set @mo = 1224
declare upd_cursor cursor
for select ma,mo,abr,p from Tabel
where ma=@ma and mo=@mo and abr=@abr and p=@p
open upd_cursor
fetch next from upd_cursor
into @ma,@mo ,@abr ,@p
while @@fetch_status = 0
begin

/*
hier wird aber noch eine SP aufgerufen die mir einen wert lierert bzw berechnet @wert
der für jeden @p und @abr anderes ist
*/
UPDATE [Tabel]
SET [xyz]=@wert WHERE [Ma]= @ma and [Mo]= @mo and [Abr]= @abr and [P]= @p

fetch next from upd_cursor
into @ma,@mo ,@abr ,@p

end
[/PHP]

[/b]

Achso - du berechnest den Wert immer neu... - so wie's im ersten Code aussah, wolltest du doch das feld xyz überall mit 111 belegen - und das wäre auch einfacher gegangen... - wenn du aber mit einer SP den Wert für das Feld ermittelst, geht's wohl nicht ohne Cursor...

  • Autor
Original geschrieben von beetFreeQ

Achso - du berechnest den Wert immer neu... - so wie's im ersten Code aussah, wolltest du doch das feld xyz überall mit 111 belegen - und das wäre auch einfacher gegangen... - wenn du aber mit einer SP den Wert für das Feld ermittelst, geht's wohl nicht ohne Cursor...

schade, weil es ganz langsam ist und ich dachte .... vielleich kann man es beschleinigen

Original geschrieben von 007ski

schade, weil es ganz langsam ist und ich dachte .... vielleich kann man es beschleinigen

Naja, mit etwas Glück hilft es, die Tabelle mit einigen Indexen (oder wie heißt da die Mehrzahl? ;)) zu bestücken. Am Besten legst du welche auf die Spalten, nach denen du selektierst...

Ansonsten könntest du die Stored Procedure, die du da zwischendurch ausführst, ja mal posten - vielleicht braucht die ja schon länger als nötig!

Hast du die Ausführung des Codes schonmal im SQL Profiler analysiert? Da kann man meistens ganz gut erkennen, wo die Engstellen liegen...

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.