Veröffentlicht 6. Juni 201114 j Tach zsm , ich hätte mal ein kleines Problem. OPEN AppDev; FETCH AppDev INTO @AppDev; while(@@FETCH_STATUS = 0) begin select @LID = max(LID) from prjadm.aufgabenplan; SET @LIDCounter = @LID + 1; insert into prjadm.aufgabenplan values (@LIDCounter, @Zaehler, @LID, 'Gemeldete Fehler beheben.', '10', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '0', '0', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '0','0'); insert into prjadm.usepro_todo values (@AppDev, @LIDCounter); FETCH AppDev INTO @AppDev; end CLOSE AppDev; und zwar habe ich das gefühl dass der in die while-schleife nicht reingeht. Kann es dadran liegen das der Cursor momentan nur 1datensatz aus dem select wiederbekommt ? Dass er nach dem ersten Fetch direkt den Status auf -1 setzt , da ja keiner mehr da ist ? Mfg
7. Juni 201114 j Was bitte ist das denn für eine Formatierung eines Textes? Wer soll das lesen? aber mal ins blaue geschossen -> nein, es liegt nicht daran, dass Du nur einen Datensatz erhälst, sondern daran, dass Du gar keinen bekommst
7. Juni 201114 j Autor Warum sollte ich keinen Datensatz zurück bekommen ? Wenn ich das Statement welches ich für den Cursor benutze ganz nromal auf der Datenbank loslasse kommt dort auch ein Datensatz zurück Mfg
7. Juni 201114 j sorry, der hier FETCH AppDev INTO @AppDev; stimmt glaube ich nicht das ist die Oracle Syntax die MS SQL Syntax lautet -> FETCH next FROM AppDev INTO @AppDev; natürlich in beiden Fetch Statements
7. Juni 201114 j Autor sorry, der hier FETCH AppDev INTO @AppDev; stimmt glaube ich nicht das ist die Oracle Syntax die MS SQL Syntax lautet -> FETCH next FROM AppDev INTO @AppDev; Das ist soweit ich weiß falsch, "FETCH CURSOR INTO VARIABLE" klappt normalerweise auch. Ich habs auch mit dem NEXT FROM ausprobiert gleiches ergebnis .. er tut einfach nichts was in der while schleife ist. Habe nun mal 3 prints eingebaut. 1 vor dem while einen weiteren in der while schleife und nach der schleife nur der Print vor und nach der while schleife kommt durch. Mfg
7. Juni 201114 j Dann geb doch mal bitte die Deklaration des Cursors und die Deiner @AppDev Variablen
7. Juni 201114 j Autor Cursor deklaration : DECLARE AppDev CURSOR for select distinct REF_USER FROM prjadm.v_usepro_aufgabe where REF_Cost_ID = '3' and REF_Control_ID = @Zaehler; -- Habs vor 2 Minuten noch getested es kommt aufjedenfall ein Datensatz zurück. Variablen deklaration: DECLARE @AppDev int; wobei ich nicht wirklich glaub das dort ein fehler ist Der print vor dem while( allso schon nach dem open) geht ja durchaus noch durch. Nur der print in der while schleife geht nicht. Es sieht so aus für mich als ob , @@FETCH_STATUS auf -1 steht direkt nach dem ersten fetch. Mfg Bearbeitet 7. Juni 201114 j von Serear
7. Juni 201114 j Auch wenns jetzt eine Dumme Frage ist, aber von welchem Datentyp ist der Ref_User in der prjadm.v_usepro_aufgabe?
7. Juni 201114 j Autor integer natürlich Aber ich denke ich werde die sache mit den Cursorn kippen. Und mir bissel härtere inserts bauen
7. Juni 201114 j Wenn @@fetch_Status tatsächlich = -1 ist, dann gilt folgendes: FETCH statement failed or the row was beyond the result set lass Dir die Variable mal mit Print anzeigen. Sollte da wirklich ein -1 stehen, dann gibt entweder Dein Cursor keine Daten zurück, oder etwas anderes sorgt dafür, dass er auf die Nase fällt Ist @Zaehler gefüllt?
7. Juni 201114 j Autor @Zaehler ist gefüllt. hab das problem gelöst, zwar bissel unlogisch in meinen Augen aber naja. Hab das Deklarieren des Cursors mal direkt vor dem Open hingesetzt nun klappts. Keine ahnung wie das auffem Weg verloren gegangen ist. Naya, es klappt. Dir danke ich für deine Hilfe @ementiel
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.