Bonjour,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SET TERM ^ ;
CREATE OR ALTER PROCEDURE PS1 (
    id INTEGER,
    XNUM SMALLINT,
    XCODE1 CHAR(10),
    XCODE2 CHAR(16),
    XMNT NUMERIC(13,4),
    XCDE CHAR(30)
)
AS
DECLARE S VARCHAR(255);
BEGIN
      S = 'insert into table1 (id,num,code1,code2,mnt, cde) values ('
      ||:xid ||','||:xnum||','||:xcode1||','||:xcode2||','||:xmnt||','||:xcde||')';
      EXECUTE STATEMENT (:S);
END^
SET TERM ; ^
Si j’exécute la commande suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SQL> execute procedure ps1(15,1,'34210001','1-00005',3,'23');
Etant donné que '1-00005' est le code d’un article, mais, firebird me met la valeur -4 qui est le résultat de :
(1 – 00005) !!!!!!!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SQL> select id,num,code1,code2,mnt, cde from table1;
 
ID    	NUM	   CODE1       CODE2      MNT		     CDE 
==== ====    =======   ======    =========   ======= 
15      1 	   34210001     -4            3  		       23
J’ai utilisé cast(xcode2 as char(16)) comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
S = 'insert into table1 (id,num,code1,code2,mnt, cde) values ('
      ||:xid ||','||:xnum||','||:xcode1||','||'cast('||:xcode2||'as char(12))'|| ',' || :xmnt||','||:xcde)';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
SQL> execute procedure ps1(15,1,'34210001','1-00005',3,'BBBB');
Statement failed, SQLSTATE = 42S22
Dynamic SQL Error
-SQL error code = -206
-Column unknown
-BBBB
-At line 1, column 169
SQL>
Il n’accèpte pas BBBB sur la colonne cde.

Est ce que quelqu'un peut m'aider à trouver la solution.

Merci