Serear Geschrieben 6. Juni 2011 Teilen Geschrieben 6. Juni 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 7. Juni 2011 Teilen Geschrieben 7. Juni 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 7. Juni 2011 Autor Teilen Geschrieben 7. Juni 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 7. Juni 2011 Teilen Geschrieben 7. Juni 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 7. Juni 2011 Autor Teilen Geschrieben 7. Juni 2011 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 7. Juni 2011 Teilen Geschrieben 7. Juni 2011 Dann geb doch mal bitte die Deklaration des Cursors und die Deiner @AppDev Variablen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 7. Juni 2011 Autor Teilen Geschrieben 7. Juni 2011 (bearbeitet) 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 2011 von Serear Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 7. Juni 2011 Teilen Geschrieben 7. Juni 2011 Auch wenns jetzt eine Dumme Frage ist, aber von welchem Datentyp ist der Ref_User in der prjadm.v_usepro_aufgabe? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 7. Juni 2011 Autor Teilen Geschrieben 7. Juni 2011 integer natürlich Aber ich denke ich werde die sache mit den Cursorn kippen. Und mir bissel härtere inserts bauen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 7. Juni 2011 Teilen Geschrieben 7. Juni 2011 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 7. Juni 2011 Autor Teilen Geschrieben 7. Juni 2011 @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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
emetiel Geschrieben 7. Juni 2011 Teilen Geschrieben 7. Juni 2011 Hattest Du @AppDev oder @Zaehler evtl vorher erst hinter dem Cursor deklariert? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Serear Geschrieben 7. Juni 2011 Autor Teilen Geschrieben 7. Juni 2011 Ja Deklariert sind sie vor den Cursor. allerdings noch nicht initialisiert. 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.