2010-06-14 5 views
0

Je travaille maintenant sur vbscript pour faire un test. Actuelly, je veux récupérer une grande quantité de données à partir d'une base de données Oracle, donc j'écrire le code comme ceci:Comment récupérer de grandes données à partir de la base de données Oracle à l'aide de vbscript

sql = "Select * from CORE_DB where MC = '" & mstr & "' " 
Set myrs = db_execute_query(curConnection, sql) 

Ensuite, je compte les lignes myrs, il y a 248 lignes. Alors, je fais une boucle Pour pour récupérer des champs de chaque ligne.

For k = 0 To db_get_rows_count(myrs) 

Mais je trouve que le contenu de la ligne k lorsque k> 133 était toujours égal à k = 133. Donc, cela fait une erreur.

La db_execute_query fonction est comme

Function db_execute_query (byRef curSession , SQL) 
set rs = curSession.Execute(SQL) 
set db_execute_query = rs 
End Function 

La db_get_rows_count fonction est comme

Function db_get_rows_count(byRef curRS) 
    dim rows 
    rows = 0 
    db_get_rows_count = rows 
    curRS.MoveFirst 
    Do Until curRS.EOF 
    rows = rows+1 
    curRS.MoveNext 
    Loop 
    db_get_rows_count = rows 
End Function 

Comme je pense, il peut y avoir une taille limite de mrys? Quelqu'un pourrait-il m'éclairer à ce sujet? Merci beaucoup à l'avance

+0

Il serait utile de savoir ce que font les fonctions 'db_execute_query' et' db_get_rows_count'. Très probablement c'est là que le problème est. –

+0

@Cheran, Ok, je modifie la question pour donner quelques détails sur ces deux fonctions. Merci – allenzzzxd

+0

Quelqu'un pourrait-il donner des idées? – allenzzzxd

Répondre

1

Il serait utile de savoir ce qu'il y a réellement dans la base de données. Pouvez-vous vous connecter à votre base de données en utilisant un autre outil (SQLPlus, Développeur PL/SQL, Toad, etc) et exécuter votre requête? Et si vous le faites, les résultats correspondent-ils à ceux que vous obtenez lorsque vous exécutez votre requête via VBScript?

En outre, obtenez-vous une erreur de la base de données? Cela pourrait aider à déterminer ce qui se passe.

+0

merci pour votre réponse, j'ai vérifié dans la base de données le résultat attendu, mais je n'ai pas encore exécuté une requête sql dans un autre outil. De toute façon, je n'ai aucune erreur. – allenzzzxd

+0

Bonjour, J'ai testé en utilisant SQL Developer, le résultat est correct, donc je pense que c'est peut-être le problème de mes déclarations de VBScript – allenzzzxd

+1

En regardant votre code, je me demande pourquoi vous itérez à travers le jeu de résultats pour savoir comment plusieurs lignes ont été renvoyées par la requête, puis vous revenez pour traiter les lignes. Je suggère que vous ne devriez pas prendre la peine de compter les lignes, juste les traiter comme vous les obtenez. Si vous avez vraiment besoin de les compter avant de traiter les données, vous devez vous assurer qu'il y a un curRS.MoveFirst après avoir appelé db_get_rows_count et avant de recommencer à chercher des lignes dans le jeu de résultats. –

Questions connexes