Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Come ottenere n righe?

  1. #1

    Come ottenere n righe?

    Come si può fare a creare una query che possa restituire le righe dalla x alla x + K?
    Su una tabella di cui non conosco la struttura.

    Io ho provato
    codice:
    exec ('declare k cursor STATIC for ' + @table)
    
    open k
    
    fetch absolute 20 from k
    
    deallocate k
    Ha 2 problemi:

    1) è lenta
    2) il cursore restituisce una sola riga e io non conosco la struttura della tabella il cui nome è un parametro per cui non posso creare una table temporanea in cui inserire K righe da restituire tutte insieme.

    Non mi resta altro che fare K - 1 fetch next dopo il primo fetch absolute?

  2. #2
    Utente di HTML.it L'avatar di fradefra
    Registrato dal
    Jul 2001
    residenza
    Montagnana (PD)
    Messaggi
    1,840
    Incredibile.

    In mesi che seguo i forums di html.it è la prima volta che ti vedo fare una domanda, Andrea.

    Intanto potresti velocizzare l'estrazione usando la clausola TOP di SQL se l'implementazione che usi la gestisce.

    Es:
    sSqlString = "SELECT TOP x + k c1,c2,c3 FROM t1"

    Naturalmente x e k sono da inserire nella stringa facendo il solito concatemento dopo aver trasformato i numeri in stringa.
    Se non ricordo male, Sql Server ed Access gestisco la clausola TOP che ti restituisce i primi x record di una table. Limiti, così, il numero di record.

    Per il resto, temo che tu debba fare il loop di fetch sul cursore.

    Alternativa.
    Pensare ad una Stored Procedure?

    Comunque, visto il numero incredibile di volte in cui tu hai aiutato gli altri, spero che stavolta qualcuno possa aiutare te meglio di quanto non possa fare io.
    ciao
    Fradèfra Insight - Crescita professionale e personale
    Consulenza e corsi per la crescita imprenditoriale, professionale e personale, a distanza o in presenza.

  3. #3
    Grazie Francesco, purtroppo la procedura che devo scrivere dovrà funzionare per qualsiasi tipo di tabella, quindi mi dovrò rassegnare al fatto che sia lenta e userò quella query che ho scritto qua sotto, usando la clausola top K.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.