2009-07-20 14 views

risposta

11

Crea un cursor per la query, che consente di scorrere il set di risultati senza recuperare l'intero risultato in una volta. Uno scrollable cursor, in particolare, è uno che consente l'iterazione all'indietro.

Esempio di utilizzo: è possibile scorrere in avanti fino a trovare il record necessario e tornare indietro per recuperare i record precedenti, se necessario anche loro.

+2

Se si prevede di utilizzarli dovrebbe anche fare riferimento alla documentazione (effettiva) di dbms per trovare il tipo di cursore che si desidera utilizzare. Per alcuni di essi la versione scorrevole è molto più "costosa" di un cursore forward-only o addirittura non disponibile. – VolkerK

7

Wikipedia conferisce a questo:

Con un cursore non scorrevole, anche noto come inoltro solo, si possono recuperare ciascuna fila più di una volta, e il cursore sposta automaticamente nella immediatamente seguente riga. Un'operazione di recupero dopo l' l'ultima riga è stata recuperata posiziona il cursore dopo l'ultima riga e restituisce SQLSTATE 02000 (SQLCODE +100).

E questo:

Un programma può posizionare una scorrevole cursore in qualsiasi parte del set di risultati utilizzando l'istruzione FETCH SQL.

vi consigliamo di leggere l'articolo collegato in precedenza, ma questo sembra che alcune informazioni interessanti anche:

cursori scorrevoli possono potenzialmente accesso stessa riga del set di risultati più volte. Pertanto, le modifiche dei dati (inserimento, aggiornamento, eliminazione delle operazioni ) da altre transazioni potrebbero avere un impatto sul set risultato.

In PHP, è possibile utilizzare i cursori scorrevoli con DOP utilizzando le istruzioni preparate (vedi PDOStatement::fetch):

Per richiedere un cursore scorrevole per l'oggetto PDOStatement, è necessario impostare DOP :: Attributo ATTR_CURSOR a PDO :: CURSOR_SCROLL quando si prepara l'istruzione SQL con PDO :: prepare().

(c'è anche un esempio, più in basso la pagina)

Quello che sembra interessante è la possibilità di "scorrere" attraverso il gruppo di risultati, senza dover ottenere tutti i dati in memoria per scorrere su di esso.

1

Per Mysql ... non supportato = non disponibile (né mysql (i) né DOP):

mysqli_result :: data_seek(), si noti che gli stati manuali: "Questa funzione può essere utilizzato solo con tamponata risultati ottenuti dall'uso delle funzioni mysqli_store_result() o mysqli_query()."Ovvero, la ricerca avviene su una copia memorizzata nella cache locale del set di risultati: non sul server, quindi non supporta alcun suggerimento di un" cursore scorrevole "

Problemi correlati