L'exécutable db2cli se trouve dans le sous-répertoire d'installation de DB2, sqllib/samples/cli/, situé dans le répertoire principal du propriétaire de l'instance de base de données. Si vous utilisez IBM® Data Server Driver for ODBC and CLI, l'exécutable db2cli se trouve dans le répertoire d'installation clidriver/bin.
Cette rubrique décrit uniquement la fonction pureQuery de la commande db2cli. La fonction pureQuery est fournie par l'option execsql de la commande. Pour plus d'informations sur la commande CLI, reportez-vous à la rubrique db2cli - DB2 interactive CLI command dans le centre de documentation de DB2 for Linux, UNIX et Windows.
Aucune
Aucune
>>-db2cli--+-| execsql-mode |-+-------------------------------->< '- -help-----------' execsql-mode (1) .- -execute-----. |--execsql------+---------------+--+-| server-option |----+-----> '- -prepareonly-' '- -connstring--chaîne-' >-- -inputsql--fichier_sql--+---------------------------+-------> '- -outfile--fichier_sortie-' >--+----------------------------------+-------------------------> '- -statementdelimiter--délimiteur-' >--+----------------------------------------+-------------------> '- -commentstart--indicateur_commentaire-' >--+---------------------------+--------------------------------> '- -cursorhold--holdability-' >--+---------------------------------------+--------------------> '- -cursorconcurrency--accès_concurrent-' >--+--------------------+--+--------+---------------------------| '- -cursortype--type-' '- -help-' server-option |-- -dsn--nom-dsn--+--------------------+-----------------------| '-| authentication |-' authentication |-- -user-- -nom_utilisateur--+------------------------+--------| '- -passwd -mot_de_passe-'
Pour comprendre les conventions utilisées dans le diagramme, voir Comment lire les diagrammes de syntaxe.
Les options suivantes sont les options pureQuery-specific de la commande db2cli.
La valeur par défaut est yes.
Seuls des instructions SQL et des commentaires peuvent figurer dans le fichier SQL d'entrée. Le fichier ne doit pas inclure d'attributs ou de mots clés propres à l'environnement CLI.
Seules les instructions SQL qui peuvent être préparées sont autorisées dans le fichier SQL d'entrée. Les commandes DB2, telles que DESCRIBE TABLE et BIND, ne sont pas admises.
Si des instructions SQL du fichier dépendent d'instructions DDL dans le fichier d'entrée, vous devez exécuter toutes les instructions DDL avant d'exécuter la commande db2cli execsql -prepareonly.
Lorsque vous utilisez l'option -execute avec la commande db2cli execsql, les instructions SQL ne doivent pas avoir de marqueurs de paramètre.
Les instructions SQL par lot ne sont pas prises en charge.
Les instructions SQL sont exécutées avec l'API CLI DB2 SQLExecDirect(). Lorsque la commande db2cli exécute des instructions SQL dans une base de données, elle reconnaît les paramètres indiqués dans le fichier db2cli.ini ou db2dsdriver.cfg défini pour la base de données.
La chaîne du message d'erreur renvoyée par la commande db2cli est la chaîne renvoyée par l'API de traitement des erreurs CLI SQLError() ou SQLGetDiagRec().
create table employee(empid integer, empname varchar(100) CREATE PROCEDURE proc1 ( ) DYNAMIC RESULT SETS 1 P1: BEGIN DECLARE cursor1 CURSOR WITH RETURN FOR SELECT * FROM fprem; OPEN cursor1; END P1 CREATE PROCEDURE PROC2(IN ID1 INTEGER,OUT NAME VARCHAR(20)) BEGIN DECLARE CUR1 CURSOR WITH RETURN TO CALLER FOR SELECT * FROM EMPLOYEE1 WHERE ID=ID1; OPEN CUR1; END
L'exemple suppose également que le fichier SQL test.sql contient le texte suivant :
--Insertion de données dans la table( employee ) insert into employee(empid, empname) values(1, 'Adam') insert into employee(empid, empname) values(2, 'Atul') select empid, empname from employee --Exécution de la procédure mémorisée Call proc1( )
Vous entrez la commande db2cli suivante dans une fenêtre de la console pour exécuter les instructions SQL du fichier :
db2cli execsql –dsn sample –inputsql test.sql
Le texte suivant s'affiche dans la fenêtre de la console :
IBM DATABASE 2 Interactive CLI Sample Program (C) COPYRIGHT International Business Machines Corp. 1993,1996 All Rights Reserved Licensed Materials - Property of IBM US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. insert into employee(empid, empname) values(1, 'Adam') The SQL command completed successfully. insert into employee(empid, empname) values(2, 'Atul') The SQL command completed successfully. select empid, empname from employee EMPID EMPNAME 1, Adam 2, Atul Call proc1() EMPID EMPNAME 1, Adam 2, Atul
Vous pouvez exécuter une instruction CALL pour une procédure mémorisée incluant des arguments OUT. Le point d'interrogation (?) peut être utilisé en tant que paramètre OUT.
L'exemple suivant suppose que le fichier script SQL test2.sql contient le texte suivant :
CALL PROC2( 1, ?)
Vous entrez la commande db2cli suivante dans une fenêtre de la console pour exécuter les instructions SQL du fichier :
db2cli execsql –dsn sample –inputsql test2.sql
Le texte suivant s'affiche dans la fenêtre de la console :
Value of output parameters -------------------------- Parameter Name : NAME Parameter Value : - ID ----------- 1
Indiquez l'option -prepareonly pour préparer les instructions SQL sans les exécuter. Les instructions DDL nécessaires aux instructions SQL doivent être exécutées avant la commande db2cli execsql associée à l'option -prepareonly.
L'exemple suivant suppose que le fichier script SQL test3.sql contient le texte suivant :
--Insertion des données dans la table( employee ) insert into employee(empid, empname) values(1, 'Adam'); insert into employee(empid, empname) values(2, 'Atul'); select empid, empname from employee;
On suppose également que la table EMPLOYEE a été créée dans la base de données.
Vous entrez la commande db2cli suivante dans une fenêtre de la console pour préparer les instructions SQL dans le fichier :
db2cli execsql –prepareonly –dsn sample –inputsql test3.sql
Le texte suivant s'affiche dans la fenêtre de la console :
IBM DATABASE 2 Interactive CLI Sample Program (C) COPYRIGHT International Business Machines Corp. 1993,1996 All Rights Reserved Licensed Materials - Property of IBM US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. insert into employee(empid, empname) values(1, 'Adam') The SQL command prepared successfully. insert into employee(empid, empname) values(2, 'Atul') The SQL command prepared successfully. select empid, empname from employee The SQL command prepared successfully.
Si vous placez des instructions DDL nécessaires aux instructions DML dans le même fichier, les instructions DML nécessaires aux instructions DDL échouent. Par exemple, supposons que le texte suivant se trouve dans le fichier test4.sql et que la table EMPLOYEE n'a pas été créée dans la base de données :
--create and populate table( employee ) create table employee(empid integer, empname varchar(100)); insert into employee(empid, empname) values(1, 'Adam'); insert into employee(empid, empname) values(2, 'Atul'); select empid, empname from employee; -- Tentative de création d'une autre table portant le même nom create table employee(empid integer, empname varchar(100));
L'instruction CREATE TABLE doit être exécutée avant l'exécution des instructions INSERT et SELECT.
Vous entrez la commande db2cli suivante dans une fenêtre de la console pour préparer les instructions SQL du fichier :
db2cli execsql –prepareonly –dsn sample –inputsql test4.sql
Le texte suivant s'affiche dans la fenêtre de la console :
IBM DATABASE 2 Interactive CLI Sample Program (C) COPYRIGHT International Business Machines Corp. 1993,1996 All Rights Reserved Licensed Materials - Property of IBM US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. create table employee(empid integer, empname varchar(100)) The SQL command prepared successfully. insert into employee(empid, empname) values(1, 'Adam') The SQL command failed. During SQL processing it returned: [IBM][CLI Driver][DB2/6000] SQL0204N "EMPLOYEE" is an undefined name. SQLSTATE=42704 insert into employee(empid, empname) values(2, 'Atul') The SQL command failed. During SQL processing it returned: [IBM][CLI Driver][DB2/6000] SQL0204N "EMPLOYEE" is an undefined name. SQLSTATE=42704 select empid, empname from employee The SQL command failed. During SQL processing it returned: [IBM][CLI Driver][DB2/6000] SQL0204N "EMPLOYEE" is an undefined name. SQLSTATE=42704 create table employee(empid integer, empname varchar(100)) The SQL command prepared successfully.
Dans cet exemple, les deux instructions SQL CREATE ont été correctement préparées mais la table EMPLOYEE n'a pas été créée dans la base de données. Les instructions INSERT et SELECT n'ont pas été préparées correctement car la table EMPLOYEE ne se trouve pas dans la base de données.