0
votes

Sélectionnez N Row avec DB2 dans Visual Studio

Je veux obtenir les 95 premières données de DB2 dans Visual Studio. J'utilise un adaptateur de table et j'ai cette requête,

Sélectionnez * de aseindta.trx_bws où (Dkldate = '2019-10-31') chercher les 95 premières lignes seulement

ou cette

Sélectionnez * de aseindta.trx_bws où (Dkldate = '2019-10-31') Commander par Col [1] ... Col [n] Chercher les premières lignes de 95 lignes seulement

Mais quand je clique sur Query Builder, cette erreur apparaît. Erreur d'image

Mais quand je l'ai essayé dans dbvisualizer, ça marche. Comment puis-je obtenir ces données? Une aide serait appréciée. Merci


4 commentaires

Votre requête doit avoir vraiment besoin d'une commande par Quelle (s) colonne (s) utilisez-vous pour la commande?


Faites ce SELECT SELECT TOP (95) [COL1], [COL2], [COL3] d'ASEINDTA.TRX_BWS où Dkldate Like '% 2019-10-31'% de commande par Col1 Desc


@TimbieGeleisen Bonjour, j'ai essayé commander par avant mais je ne l'ai pas mentionné, et pas d'Eiter.


Modifiez votre question pour afficher le code C #. N'utilisez pas la syntaxe spécifique du SGBD dans la requête (extraire d'abord ...). Vous pouvez utiliser les arguments sur la méthode de remplissage de la table / DataDapter pour limiter le jeu de résultats. Vous pouvez également effectuer la limitation à la fin du SGBM en encapsulant la requête dans une routine.


4 Réponses :


0
votes

Une approche fonctionnerait sur DB2 et la plupart des autres bases de données seraient d'utiliser Row_Number CODE> avec une sous-requête:

SELECT *
FROM
(
    SELECT *, ROW_NUMBER() OVER (ORDER BY some_col) rn
    FROM ASEINDTA.TRX_BWS
    WHERE DKLDATE = '2019-10-31'
) t
WHERE rn <= 95;


3 commentaires

Umm, son adaptateur de table dans Visual Studio.


@SyafiQur__ Utilisez ensuite la version inlined, Q.v. ma réponse mise à jour.


Nan. Ne peut pas utiliser cette requête.



0
votes

Retirez les parenthèses de la clause WHERE:

SELECT * FROM ASEINDTA.TRX_BWS WHERE DKLDATE = '2019-10-31' Fetch First 95 Rows Only


0 commentaires

0
votes

Il semble que le problème ne soit pas sur DB2-Server IT-Self, mais à partir de l'outil que vous utilisez pour exécuter les requêtes. Vous avez dit, si vous exécutez la même chose dans 'dbvisualizer', cela fonctionne correctement.

En regardant la documentation DB2 pour cette erreur: sqlcode -104 sqlstate 42601 p>

Il semble que cette erreur soit renvoyée par SYSPROC.ADMIN_CMD Procédure stockée. Cette procédure est conçue pour exécuter des commandes d'administration DB2 dans la base de données cible, à distance. Il n'a pas été conçu pour exécuter des requêtes ... Donc, l'analyseur de ce proc n'est qu'un sous-ensemble d'analyseurs DB2, juste pour des commandes d'administration spécifiques. Donc, il se plaint du jeton de récupération de votre requête. p>

Il semble que l'outil que vous utilisez 'J'utilise un adaptateur de table' strong> (aucune idée de quoi est-ce), appelle ce sysproc.admin_cmd pour exécuter les requêtes, Mais il devrait utiliser une interface CLI régulière à la place. p>

Je ne sais pas quel outil vous utilisez exactement. Mais essayez de voir s'il a une sorte de paramètres, vous pouvez donc changer ce comportement. p>

Voici la liste des cmds administratif que Admin_cmd Proc peut exécuter: https://www.ibm.com/support/knowdgecenter/fr/ssepgg_11.0/com.sql.db2.luw.sql.rtn.doc/doc/r0012547.html . P>

Comme vous pouvez le constater, pas de déclaration de sélection. P>

Si j'essaie d'exécuter une sélection simple, à l'aide de ce SP, je reçois la même erreur, de la fenêtre DB2 CLP, directement sur le serveur. p>

db2 "call SYSPROC.ADMIN_CMD('SELECT * FROM DEPARTMENT')"
SQL0104N  An unexpected token "SELECT" was found following
"BEGIN-OF-STATEMENT".  Expected tokens may include:  "ADD".  SQLSTATE=42601


0 commentaires

0
votes

OK J'étais de plus près sur l'erreur d'image que vous avez postée ...

La requête est fausse. Ce n'est pas exactement les mêmes requêtes que vous avez postées dans votre question.

Regardez de plus près l'erreur d'image et vous verrez que les mots de récupération et de lignes sont à double cotation. xxx

retirez le double- citations d'eux.

Si vous ne les écrivez pas comme ça, il semble donc que votre outil est "Changer", avant de soumettre au moteur DB2. Encore une fois, pas un numéro de serveur DB2.

considère


4 commentaires

Bonjour, dès que je clique sur la touche Builder , la double citation est apparue. J'essaie d'enlever au début, et il est toujours apparu dans ma requête. Que voulez-vous dire par mon outil le change?


Je veux dire exactement ce que vous décrivez. Les citations ne doivent pas être là pour ce jeton (récupération), sa partie de la syntaxe. Ce n'est pas un identifiant nommé. Il semble que "Query Builder" n'est pas conçu pour fonctionner avec une autre syntaxe SGMS et sa syntaxe SMSQL uniquement. Avez-vous besoin d'utiliser «Builder Query»? Il semble que cela ne reconnaisse pas le mot-clé et sa traitant comme il s'agissait d'un alias de colonne et de mettre les citations doubles autour de lui.


Oui, j'ai besoin de vérifier la requête et du résultat attendu


Normalement, "Constructeurs de requêtes" ne sont que des outils pour vous aider à construire vos déclarations SELECT .. les exécutant et vérifiez que les résultats attendus peuvent être effectués sans eux.