Verschachtelte Cursor in Mysql

8

Ich habe drei Tabellen.
Projekt (ID), Attribut (Id), Projektattribut (ID, Projekt-ID, Attribut-ID) .

Ich möchte Datensätze in der Tabelle project_attribute erstellen, indem Sie alle Attribute aus der Tabelle attribute für jedes Projekt aus der Tabelle project verwenden.

Um solche Datensätze zu erstellen, verwende ich die folgende Speicherprozedur.

%Vor%

Diese Prozedur erstellt jedoch nur Datensätze für ein Projekt in der Tabelle "project_attribute", obwohl in der Projekttabelle 50 Projekte vorhanden sind. Die erwartete Anzahl von Datensätzen ist count (projectId) * count (attributeId).

    
Avinash T. 14.03.2012, 10:15
quelle

3 Antworten

23

Versuchen Sie dies, das wird Ihr Problem sicherlich lösen.

%Vor%     
Nandkumar Tekale 19.03.2012, 15:32
quelle
7

Ganz offensichtlich sind verschachtelte Cursor (normalerweise) eine schreckliche Idee. Sie können erhalten, was Sie wollen, ohne einen Cursor zu verwenden, indem Sie eine normale CROSS JOIN .

%Vor%     
bhamby 14.03.2012 14:11
quelle
0

Nach der ersten Iteration innerhalb des inneren Cursors wird die Variable "attribute_done" auf "true" gesetzt. Und es bleibt für jede nächste Iteration "wahr".

Dies bewirkt, dass bei jeder nächsten Iteration die innere Schleife übersprungen wird.

Ein Beispiel für einen verschachtelten Cursor ist unten dargestellt.

%Vor%     
Milan 04.01.2018 13:28
quelle

Tags und Links