Db2 - comment attribuer une valeur à une variable avec l'instruction EXECUTE dans db2
Je suis tring pour exécuter la requête dans une base de données db2 procédure:
CREATE OR REPLACE PROCEDURE TEST (IN indbnm VARCHAR(30), IN intblnm VARCHAR(30))
LANGUAGE SQL
BEGIN
DECLARE statmnt2 VARCHAR(1000);
DECLARE VAR_COD_TIPO_ARQU CHAR(1);
DECLARE stmt1 STATEMENT;
SET statmnt2 = 'SELECT COD_TIPO_ARQU FROM '||indbnm||'.'||intblnm||' FETCH FIRST 1 ROWS ONLY';
PREPARE stmt1 FROM statmnt2;
SET VAR_COD_TIPO_ARQU = EXECUTE (stmt1);
END@
Cela donne l'erreur suivante:
DB21034E The command was processed as an SQL statement because it was not a
valid Command Line Processor command. During SQL processing it returned:
SQL0206N "STMT1" is not valid in the context where it is used. LINE
NUMBER=33. SQLSTATE=42703
Quelle est la bonne manière de définir VAR_COD_TIPO_ARQU
avec COD_TIPO_ARQU
valeur dynamiquement?
Merci.
Vous devez vous connecter pour publier un commentaire.
Le problème est la façon dont vous définissez le résultat de l'exécution:
C'est le code qui est exécuté succefuly
Salut est-il correct solutuion:
TY.
Je sais, ça fait un moment depuis que cette question a été posée, mais j'ai constaté qu'aucune des réponses données travaillé.
@AngocA la solution était proche, mais, comme @Mani_Swetha souligné, le
EXECUTE
instruction échoue en raison de laSELECT
peu.Après la recherche et la combinaison de solutions à travers le web, c'est ce qui a finalement fonctionné pour moi:
Notez que la commande exécutée est un
set
déclaration avec unSELECT
à l'intérieur, plutôt qu'une pureSELECT
déclaration. C'est ce qui rend le truc.