Bonjour,
Si j’exécute la commande suivante :
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 ; ^
Etant donné que '1-00005' est le code d’un article, mais, firebird me met la valeur -4 qui est le résultat de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQL> execute procedure ps1(15,1,'34210001','1-00005',3,'23');
(1 – 00005) !!!!!!!
J’ai utilisé cast(xcode2 as char(16)) comme suit :
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
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)';Il n’accèpte pas BBBB sur la colonne cde.
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>
Est ce que quelqu'un peut m'aider à trouver la solution.
Merci
Partager