probleme dans execute statement
Bonjour,
Code:
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:
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) !!!!!!!:roll::roll::roll:
Code:
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:
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:
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