Subject | cannot transliterate characters |
---|---|
Author | Sergio H. Gonzalez |
Post date | 2008-08-11T11:29:30Z |
Hello, I use FB2.1 and connect to the DB with characterset = ISO8859_1
In a procedure (see below, please) if I pass "in_moneda = 'Dólares'" I get an
exeption:
cannot transliterate characters between character sets
I see that the problem is the 'ó' (with accent), but don't understand why
THANKS !!!
--------------
CREATE PROCEDURE ACTUALIZAR_ARTICULOS (
in_codigo_segun_proveedor varchar(50),
in_descripcion varchar(150),
in_subgrupo varchar(150),
in_alicuota_iva numeric(9,2),
in_costo numeric(9,3),
in_moneda varchar(50))
returns (
out_articulo_nuevo integer)
as
declare variable loc_moneda integer;
declare variable loc_id_subgrupo integer;
begin
if (EXISTS
(SELECT ID
FROM STOCK
WHERE CODIGO_SEGUN_PROVEEDOR = :IN_CODIGO_SEGUN_PROVEEDOR)) then
begin
OUT_ARTICULO_NUEVO = 0;
UPDATE STOCK
SET COSTO = :IN_COSTO
WHERE CODIGO_SEGUN_PROVEEDOR = :IN_CODIGO_SEGUN_PROVEEDOR;
end
else
begin
OUT_ARTICULO_NUEVO = 1;
if ((Upper(IN_MONEDA)='DOLARES') OR (IN_MONEDA='Dólares')) then
LOC_MONEDA = 2;
else
if (Upper(IN_MONEDA)='PESOS') then
LOC_MONEDA = 1;
else
LOC_MONEDA = 3;
/* grupos */
SELECT ID
FROM SUBGRUPO
WHERE DESCRIPCION = :IN_SUBGRUPO
INTO :LOC_ID_SUBGRUPO;
if (LOC_ID_SUBGRUPO is null) then
begin
LOC_ID_SUBGRUPO = Gen_ID(STOCK,1);
INSERT INTO SUBGRUPO(ID,ID_GRUPO,DESCRIPCION)
VALUES(:LOC_ID_SUBGRUPO, 1,:IN_SUBGRUPO);
end
INSERT INTO STOCK (
ID,
DESCRIPCION,
CODIGO_SEGUN_PROVEEDOR,
ID_SUBGRUPO,
ALICUOTA_IVA,
COSTO,
DIAS_GARANTIA,
ID_MONEDAS)
VALUES (
Gen_ID(general_id,1),
:IN_DESCRIPCION,
:IN_CODIGO_SEGUN_PROVEEDOR,
:LOC_ID_SUBGRUPO,
:IN_ALICUOTA_IVA,
:IN_COSTO,
0,
:LOC_MONEDA);
end
suspend;
end
In a procedure (see below, please) if I pass "in_moneda = 'Dólares'" I get an
exeption:
cannot transliterate characters between character sets
I see that the problem is the 'ó' (with accent), but don't understand why
THANKS !!!
--------------
CREATE PROCEDURE ACTUALIZAR_ARTICULOS (
in_codigo_segun_proveedor varchar(50),
in_descripcion varchar(150),
in_subgrupo varchar(150),
in_alicuota_iva numeric(9,2),
in_costo numeric(9,3),
in_moneda varchar(50))
returns (
out_articulo_nuevo integer)
as
declare variable loc_moneda integer;
declare variable loc_id_subgrupo integer;
begin
if (EXISTS
(SELECT ID
FROM STOCK
WHERE CODIGO_SEGUN_PROVEEDOR = :IN_CODIGO_SEGUN_PROVEEDOR)) then
begin
OUT_ARTICULO_NUEVO = 0;
UPDATE STOCK
SET COSTO = :IN_COSTO
WHERE CODIGO_SEGUN_PROVEEDOR = :IN_CODIGO_SEGUN_PROVEEDOR;
end
else
begin
OUT_ARTICULO_NUEVO = 1;
if ((Upper(IN_MONEDA)='DOLARES') OR (IN_MONEDA='Dólares')) then
LOC_MONEDA = 2;
else
if (Upper(IN_MONEDA)='PESOS') then
LOC_MONEDA = 1;
else
LOC_MONEDA = 3;
/* grupos */
SELECT ID
FROM SUBGRUPO
WHERE DESCRIPCION = :IN_SUBGRUPO
INTO :LOC_ID_SUBGRUPO;
if (LOC_ID_SUBGRUPO is null) then
begin
LOC_ID_SUBGRUPO = Gen_ID(STOCK,1);
INSERT INTO SUBGRUPO(ID,ID_GRUPO,DESCRIPCION)
VALUES(:LOC_ID_SUBGRUPO, 1,:IN_SUBGRUPO);
end
INSERT INTO STOCK (
ID,
DESCRIPCION,
CODIGO_SEGUN_PROVEEDOR,
ID_SUBGRUPO,
ALICUOTA_IVA,
COSTO,
DIAS_GARANTIA,
ID_MONEDAS)
VALUES (
Gen_ID(general_id,1),
:IN_DESCRIPCION,
:IN_CODIGO_SEGUN_PROVEEDOR,
:LOC_ID_SUBGRUPO,
:IN_ALICUOTA_IVA,
:IN_COSTO,
0,
:LOC_MONEDA);
end
suspend;
end