Como truncar um valor numa Trigger;Procedure :
Ola!
Sou desenv. D + IB/FB + DBExpress
TEnho a seguinte duvida em Trigger/Procedure:
Como truncar o valor: 12.127895678
e obeter o resultado : 12.12
Por favor responda por completo de deixe um exemplo.
Desde ja meus agradecimentos
T+
ANT.CARLOS/SP
Sou desenv. D + IB/FB + DBExpress
TEnho a seguinte duvida em Trigger/Procedure:
Como truncar o valor: 12.127895678
e obeter o resultado : 12.12
Por favor responda por completo de deixe um exemplo.
Desde ja meus agradecimentos
T+
ANT.CARLOS/SP
Ant.carlos/sp
Curtidas 0
Respostas
Afarias
15/08/2005
Vc vai ter q usar uma UDF!
no caso da UDF padrão do IB não tem uma função específica para isso mas vc pode usar a FLOOR pra ´simular´ ::
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_floor´ MODULE_NAME ´ib_udf´;
select floor(12.127895678*100)/100 from ...
outras bibliotecas podem ter uma função específica para o caso
T+
no caso da UDF padrão do IB não tem uma função específica para isso mas vc pode usar a FLOOR pra ´simular´ ::
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_floor´ MODULE_NAME ´ib_udf´;
select floor(12.127895678*100)/100 from ...
outras bibliotecas podem ter uma função específica para o caso
T+
GOSTEI 0
Ant.carlos/sp
15/08/2005
Olá! :D
Uso: D7 + FB + DBExpress
Não consegui fazer as funcoes funcionarem:
Floor(), SubString(), Lenght(), Mod(), etc...
na minha Trigger!
-----------
[color=red:ee9b7a0f07]A.Farias escreveu:
Vc vai ter q usar uma UDF!
no caso da UDF padrão do IB não tem uma função específica para
isso mas vc pode usar a FLOOR pra ´simular´ ::
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_floor´ MODULE_NAME ´ib_udf´; [/color:ee9b7a0f07]
-----------
1-O que tenho q inseri na minha Trigger p/ que
as Funcoes funcionem:
Ex: SubString(), Mod(), Floor, etc..
Pois nenhuma funciona na minha trigger.
2-Abri alguns arquivos *.Sql do IB/FB e vi que lá tem
várias funcoes já prontas, como faze-las funcionarem.
Veja abaixo trecho dos arquivos.
3- select floor(12.127895678*100)/100 from ...
3.1 - Qual o comando completo ? (from ...)
3.2 - Como faço para retornar o valor numa variavel ?
Por favor, faça um passa a passo pq é a 1ª vez que faço isso e
estou meio perdido.
Desde já meus agradecimentos. :D
ANT.CARLOS/SP
===============================
[color=red:ee9b7a0f07]IB_UDF.SQL - UDFs DO Interbase
IB_UDF.SQL - UDFs DO Interbase[/color:ee9b7a0f07]===============================
* f l o o r
* Functional description:
* Returns a floating-point value
* representing the largest integer that
*is less than or equal to x
*
*****************************************/
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_floor´ MODULE_NAME ´ib_udf´;
******************************************
* m o d
* Functional description:
*Returns the remainder part of the
*division of the two input parameters.
*
*****************************************/
DECLARE EXTERNAL FUNCTION mod
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_mod´ MODULE_NAME ´ib_udf´;
*****************************************
* s t r l e n
* Functional description:
*Returns the length of a given string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION strlen
CSTRING(32767)
RETURNS INTEGER BY VALUE
ENTRY_POINT ´IB_UDF_strlen´ MODULE_NAME ´ib_udf´;
==================================
[color=red:ee9b7a0f07] FBUDF.SQL //.....UDFs do FIREBIRD
FBUDF.SQL //.....UDFs do FIREBIRD[/color:ee9b7a0f07] ==================================
//....TRUNCATE
--FBUDF_API paramdsc* fbtruncate(paramdsc* v, paramdsc* rc)
declare external function Truncate
int by descriptor, int by descriptor
returns parameter 2
entry_point ´fbtruncate´ module_name ´fbudf´;
//...ROUND
--FBUDF_API paramdsc* fbround(paramdsc* v, paramdsc* rc)
declare external function Round
int by descriptor, int by descriptor
returns parameter 2
entry_point ´fbround´ module_name ´fbudf´;
Uso: D7 + FB + DBExpress
Não consegui fazer as funcoes funcionarem:
Floor(), SubString(), Lenght(), Mod(), etc...
na minha Trigger!
-----------
[color=red:ee9b7a0f07]A.Farias escreveu:
Vc vai ter q usar uma UDF!
no caso da UDF padrão do IB não tem uma função específica para
isso mas vc pode usar a FLOOR pra ´simular´ ::
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_floor´ MODULE_NAME ´ib_udf´; [/color:ee9b7a0f07]
-----------
1-O que tenho q inseri na minha Trigger p/ que
as Funcoes funcionem:
Ex: SubString(), Mod(), Floor, etc..
Pois nenhuma funciona na minha trigger.
2-Abri alguns arquivos *.Sql do IB/FB e vi que lá tem
várias funcoes já prontas, como faze-las funcionarem.
Veja abaixo trecho dos arquivos.
3- select floor(12.127895678*100)/100 from ...
3.1 - Qual o comando completo ? (from ...)
3.2 - Como faço para retornar o valor numa variavel ?
Por favor, faça um passa a passo pq é a 1ª vez que faço isso e
estou meio perdido.
Desde já meus agradecimentos. :D
ANT.CARLOS/SP
===============================
[color=red:ee9b7a0f07]IB_UDF.SQL - UDFs DO Interbase
IB_UDF.SQL - UDFs DO Interbase[/color:ee9b7a0f07]===============================
* f l o o r
* Functional description:
* Returns a floating-point value
* representing the largest integer that
*is less than or equal to x
*
*****************************************/
DECLARE EXTERNAL FUNCTION floor
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_floor´ MODULE_NAME ´ib_udf´;
******************************************
* m o d
* Functional description:
*Returns the remainder part of the
*division of the two input parameters.
*
*****************************************/
DECLARE EXTERNAL FUNCTION mod
INTEGER, INTEGER
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT ´IB_UDF_mod´ MODULE_NAME ´ib_udf´;
*****************************************
* s t r l e n
* Functional description:
*Returns the length of a given string.
*
*****************************************/
DECLARE EXTERNAL FUNCTION strlen
CSTRING(32767)
RETURNS INTEGER BY VALUE
ENTRY_POINT ´IB_UDF_strlen´ MODULE_NAME ´ib_udf´;
==================================
[color=red:ee9b7a0f07] FBUDF.SQL //.....UDFs do FIREBIRD
FBUDF.SQL //.....UDFs do FIREBIRD[/color:ee9b7a0f07] ==================================
//....TRUNCATE
--FBUDF_API paramdsc* fbtruncate(paramdsc* v, paramdsc* rc)
declare external function Truncate
int by descriptor, int by descriptor
returns parameter 2
entry_point ´fbtruncate´ module_name ´fbudf´;
//...ROUND
--FBUDF_API paramdsc* fbround(paramdsc* v, paramdsc* rc)
declare external function Round
int by descriptor, int by descriptor
returns parameter 2
entry_point ´fbround´ module_name ´fbudf´;
GOSTEI 0
Afarias
15/08/2005
|1-O que tenho q inseri na minha Trigger p/ que
|as Funcoes funcionem:
1) vc deve ter a ´DLL´ das funções na pasta UDF da sua instalação do servidor IB ou FB
2) vc deve registrar no seu banco as funções desejadas usando o comando DECLARE EXTERNAL FUNCTION (como no exemplo) -- geralmente vc tem esses comandos na documentação da biblioteca.
|2-Abri alguns arquivos *.Sql do IB/FB e vi que lá tem
|várias funcoes já prontas, como faze-las funcionarem.
apenas execute os comandos no seu banco de dados para aquelas funções que deseja. os scripts das bibliotecas padrão do IB/FB creio que são ´ib_udf.sql´ e ´fbudf.sql´
|3- select floor(12.127895678*100)/100 from ...
|3.1 - Qual o comando completo ? (from ...)
não importa. isso é só um exemplo, vc deve ter o FROM ai.
|3.2 - Como faço para retornar o valor numa variavel ?
usando um procedimento (STORED PROCEDURE)?? algo como:
select floor(...) from ... into :variável;
T+
|as Funcoes funcionem:
1) vc deve ter a ´DLL´ das funções na pasta UDF da sua instalação do servidor IB ou FB
2) vc deve registrar no seu banco as funções desejadas usando o comando DECLARE EXTERNAL FUNCTION (como no exemplo) -- geralmente vc tem esses comandos na documentação da biblioteca.
|2-Abri alguns arquivos *.Sql do IB/FB e vi que lá tem
|várias funcoes já prontas, como faze-las funcionarem.
apenas execute os comandos no seu banco de dados para aquelas funções que deseja. os scripts das bibliotecas padrão do IB/FB creio que são ´ib_udf.sql´ e ´fbudf.sql´
|3- select floor(12.127895678*100)/100 from ...
|3.1 - Qual o comando completo ? (from ...)
não importa. isso é só um exemplo, vc deve ter o FROM ai.
|3.2 - Como faço para retornar o valor numa variavel ?
usando um procedimento (STORED PROCEDURE)?? algo como:
select floor(...) from ... into :variável;
T+
GOSTEI 0
Ant.carlos/sp
15/08/2005
:D
Olá!
Uso: D7 + FB + DBExpress + IBExpert
Para registrar minha UDFs, abri no IBExpert
a opcao TOOLS\EXECUTE SCRIPT , Inseri as funcões
e executei.
Fiz os teste e funcionou.
Veja:
Tam = strlen(campox);
valor = DIV(12,2);
Resto = mod(11,3);
Tamx = substr(CAMPOX,1,10);
valor2= floor(12.123456*100)/100;
Desde já meus agradecimentos.
ANT.CARLOS/SP
Olá!
Uso: D7 + FB + DBExpress + IBExpert
Para registrar minha UDFs, abri no IBExpert
a opcao TOOLS\EXECUTE SCRIPT , Inseri as funcões
e executei.
Fiz os teste e funcionou.
Veja:
Tam = strlen(campox);
valor = DIV(12,2);
Resto = mod(11,3);
Tamx = substr(CAMPOX,1,10);
valor2= floor(12.123456*100)/100;
Desde já meus agradecimentos.
ANT.CARLOS/SP
GOSTEI 0