Procedure para tratar mudança de virgula por ponto firebird
Estou tentando criar uma procedure para trocar virgula por ponto dentro do banco de dados, tentei assim:
só q dá um erro:
como eu posso fazer essa procedure?
ou tem alguma outra solução para o meu problema?
agradeço desde já
sds,
CREATE PROCEDURE SP_TROCAVIRPONTO ( VALOR VARCHAR(20)) RETURNS ( RETORNO VARCHAR(20)) AS DECLARE VARIABLE I INTEGER; DECLARE VARIABLE RESUL VARCHAR(20); DECLARE VARIABLE ENTRVALUE VARCHAR(20); begin i = 1; entrvalue = valor||´ ´; while (entrvalue[i] <> ´ ´) do begin if (entrvalue[i] = ´,´) then begin resul = resul || ´.´; end else begin resul = resul+entrvalue[i]; end i = i+1; end retorno = resul; suspend; end
só q dá um erro:
Invalid token. Dynamic SQL Error. SQL error code = -104. Invalid array reference.
como eu posso fazer essa procedure?
ou tem alguma outra solução para o meu problema?
agradeço desde já
sds,
Marbravo
Curtidas 0
Respostas
Edilcimar
28/03/2008
eu nunca tentei criar dentro do banco de dados, sempre faço no onkeypress, faço uma transformação, se o usuário pressiona a vírgula, eu a transformo em um ponto!
GOSTEI 0
Marbravo
28/03/2008
Eu preciso dentro do Banco de dados....
pq são varias consultas dentro de uma procedure e no final e inserido um registro na tabela, ao inserir dava o problema por isso preciso fazer q converta de ´,´ para ´.´ para poder inserir corretamente.
Alguma dica?
alguem?
agradeço desde já...
sds,
pq são varias consultas dentro de uma procedure e no final e inserido um registro na tabela, ao inserir dava o problema por isso preciso fazer q converta de ´,´ para ´.´ para poder inserir corretamente.
Alguma dica?
alguem?
agradeço desde já...
sds,
GOSTEI 0
Marbravo
28/03/2008
up
GOSTEI 0
Marbravo
28/03/2008
CREATE PROCEDURE TROCAPONTOVIR_CADPROD (
INPREFERENCIA VARCHAR(15))
RETURNS (
REFERENCIA VARCHAR(15),
PRECO_VENDA VARCHAR(20),
PRECO_CUSTO VARCHAR(20))
AS
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE S VARCHAR(20);
DECLARE VARIABLE VPRECO_CUSTO VARCHAR(20);
DECLARE VARIABLE VPRECO_UNIT VARCHAR(20);
begin
S = ´´;
I = 0;
for select P.Referencia, P.preco_custo, P.Preco_venda from Cad_Produtos P where P.referencia = :inpReferencia into :Referencia, :VPreco_Custo, :Vpreco_Unit DO
while (I <= Strlen(:VPreco_Custo)) do
begin
if (SUBSTR(:VPreco_Custo,I,I) = ´,´) then
S = S || ´.´;
else
S = S || SUBSTR(:VPreco_Custo,I,I);
i = i+1;
end
Preco_Custo = S;
while (I <= Strlen(:Vpreco_Unit)) do
begin
if (SUBSTR(:Vpreco_Unit,I,I) = ´,´) then
S = S || ´.´;
else
S = S || SUBSTR(:Vpreco_Unit,I,I);
i = i+1;
end
preco_Venda = S;
Suspend;
end
tá ai... lembrando q deve-se declarar as UDF :
DECLARE EXTERNAL FUNCTION STRLEN
CSTRING(32767)
RETURNS INTEGER BY VALUE
ENTRY_POINT ´IB_UDF_strlen´ MODULE_NAME ´ib_udf´
e
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(255),
SMALLINT,
SMALLINT
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT ´IB_UDF_substr´ MODULE_NAME ´ib_udf´
A função retorna para min o preço de custo e venda de um produto.
t+
INPREFERENCIA VARCHAR(15))
RETURNS (
REFERENCIA VARCHAR(15),
PRECO_VENDA VARCHAR(20),
PRECO_CUSTO VARCHAR(20))
AS
DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE S VARCHAR(20);
DECLARE VARIABLE VPRECO_CUSTO VARCHAR(20);
DECLARE VARIABLE VPRECO_UNIT VARCHAR(20);
begin
S = ´´;
I = 0;
for select P.Referencia, P.preco_custo, P.Preco_venda from Cad_Produtos P where P.referencia = :inpReferencia into :Referencia, :VPreco_Custo, :Vpreco_Unit DO
while (I <= Strlen(:VPreco_Custo)) do
begin
if (SUBSTR(:VPreco_Custo,I,I) = ´,´) then
S = S || ´.´;
else
S = S || SUBSTR(:VPreco_Custo,I,I);
i = i+1;
end
Preco_Custo = S;
while (I <= Strlen(:Vpreco_Unit)) do
begin
if (SUBSTR(:Vpreco_Unit,I,I) = ´,´) then
S = S || ´.´;
else
S = S || SUBSTR(:Vpreco_Unit,I,I);
i = i+1;
end
preco_Venda = S;
Suspend;
end
tá ai... lembrando q deve-se declarar as UDF :
DECLARE EXTERNAL FUNCTION STRLEN
CSTRING(32767)
RETURNS INTEGER BY VALUE
ENTRY_POINT ´IB_UDF_strlen´ MODULE_NAME ´ib_udf´
e
DECLARE EXTERNAL FUNCTION SUBSTR
CSTRING(255),
SMALLINT,
SMALLINT
RETURNS CSTRING(255) FREE_IT
ENTRY_POINT ´IB_UDF_substr´ MODULE_NAME ´ib_udf´
A função retorna para min o preço de custo e venda de um produto.
t+
GOSTEI 0