web-dev-qa-db-fra.com

Comment appeler une procédure stockée dans IBM System i Access pour Windows GUI Tool

Je souhaite tester une procédure stockée DB2 s'exécutant sur un système AS400.

IBM System i Access pour Windows est installé et je peux exécuter des commandes SQL sur la base de données DB2.

Ma question est la suivante: quelle est la syntaxe pour exécuter une procédure stockée qui prend un paramètre et renvoie un résultat en tant que paramètre de sortie et affiche la valeur à l'écran?

Juste pour clarifier: je ne demande pas comment appeler le proc dans le code. Je veux exécuter le proc et voir les résultats dans l'outil graphique (qui est similaire à SQL Enterprise Manager).

13
Ken Burkhardt

utilisez le mot clé call et transmettez les paramètres.

call myStoredProc(parm1, parm2, ?);

pour plus de détails voir ici http://www.ibm.com/developerworks/data/library/techarticle/dm-0503melnyk/ La partie intéressante est Figure 5. Utilisation de l'éditeur de commandes pour appeler une procédure SQL

23
Peter Schuetze

Ce que tu veux est possible. Je l'ai fait moi-même plusieurs fois. Malheureusement, je ne suis pas au bureau pour le moment, alors ça doit venir de ma tête.

  1. Démarrer System i Access
  2. Accédez à vos icônes iSeries et connectez-vous à celui où réside votre procédure stockée.
  3. Accédez aux icônes des bases de données et connectez-vous au bon (vous avez un local et probablement une ou plusieurs télécommandes)
  4. Alors seulement, vous verrez l'option "exécuter le script SQL" au bas de votre écran
  5. Lancez cette option et vous verrez un éditeur SQL (éditeur en haut, visualiseur/messages en bas)
  6. N'oubliez pas que vous êtes déjà connecté au bon système iSeries, mais que votre demande JDBC recevra le * LIBL du profil utilisateur de votre connexion. Par conséquent, vous devez connaître le schéma (bibliothèque iseries) de votre procédure stockée.
  7. Entrez "appelez YOURSCHEMA.Votre procédure mémorisée (?,?);" et utilisez le menu ou le raccourci pour exécuter cette instruction. Notez que - selon vos paramètres JDBC (voir menu) - la syntaxe correcte peut être "/" au lieu de ".". Notez également que vous pouvez remplacer le premier point d'interrogation par une valeur.

Sur une note supplémentaire,

  • Dans iAccess, sous chaque schéma, vous verrez des icônes pour les tables, les vues, etc. Une icône pour les procédures stockées est également disponible. Vous verrez votre SP là-bas. Utilisez les options pour voir la définition, etc. Ces informations incluent des informations détaillées sur les paramètres
  • Si vous souhaitez vérifier cela sur votre iSeries, utilisez le catalogue système (vous pouvez également le faire à partir de l'éditeur SQL) avec "select * from qsys2.sysprocedures où procedure_name (désolé, je ne suis pas sûr du nom de cette colonne pour le moment) = "VOTRE PROCUREUR"; "

TRÈS IMPORTANT: je n’ai jamais pu tester le SP avec l’éditeur SQL (STRSQL) sur l’iSeries même. Seul l'éditeur SQL iAccess a fonctionné correctement.

7
robertnl

Vous devriez pouvoir utiliser votre SP comme ceci:

DECLARE  
 usr_in  YOUR_TABLE.YOUR_COLM%TYPE; --Gets the correct type by looking at column type
 app_in  YOUR_TABLE.YOUR_OTHER_COLM%TYPE;

BEGIN
 usr_in:='some value';
 app_in:='another_value';

 YOUR_SP_NAME(usr_in, app_in);  
END;  

Ou vous pouvez utiliser EXECUTE, mais il ne peut pas être préparé de manière dynamique (ne pas s'exécuter en Java) et je pense qu'il y a d'autres inconvénients.

EXECUTE myStoredProc(parm1, parm2, ?);
0
Philip Rego