gerar script de inserção igual ao ibexpert

Firebird

03/04/2006

caros amigos , como faço para exportar meus dados igual no ibexpert, quando ele gera os scripts de inserção, pq no ibexpert existe uma opção de exportar dados para script

INSERT INTO ESTOQUE (LOJA, PRODUTO, SALDO_FISICO, SALDO_CONTABIL, SALDO_FISICO_ANT) VALUES (1, 5411, 0, -1, 0);

COMMIT WORK;


isso via delphi


Fernando

Fernando

Curtidas 0

Respostas

Flavio Deuner

Flavio Deuner

03/04/2006

Fernando, já deve ter resolvido o teu problema depois de tanto tempo. Estou desenvolvendo algo parecido com o que você precisa, encontrei no site http://www.gohu.com.br/2012/08/gerar-script-de-insert-firebird.html é uma procedure do Hugo Fernandes de muita ajuda.
/* Hugo Fernandes - 2012-08-17 */

CREATE OR ALTER PROCEDURE PROCEXTRACTINSERT (
condicao varchar(200),
tablename varchar(100))
returns (
longline varchar(8000))
as
declare variable stmt_select varchar(4000);
declare variable stmt varchar(4000);
declare variable "_FIRST" varchar(100);
declare variable "_LAST" varchar(100);
declare variable chunk varchar(4000);
begin

Chunk = ;
LongLine = ;
stmt = SELECT distinct(r.RDB$FIELD_NAME) FROM RDB$RELATION_FIELDS r
WHERE r.RDB$RELATION_NAME=||trim(upper(TABLENAME))|| ORDER BY r.RDB$FIELD_POSITION ;

execute statement
SELECT first 1 RDB$FIELD_NAME FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME=||trim(upper(TABLENAME)) || order by RDB$FIELD_POSITION asc ; into :"_FIRST" ;

execute statement
SELECT first 1 RDB$FIELD_NAME FROM RDB$RELATION_FIELDS
WHERE RDB$RELATION_NAME=||trim(upper(TABLENAME)) || order by RDB$FIELD_POSITION desc ; into :"_LAST" ;


for execute statement stmt into :chunk
do
if (Chunk is not null) then
begin
if( Chunk =TRIM("_FIRST")) then
begin
stmt_select = select insert into ||TABLENAME|| values (||coalesce( || TRIM(Chunk)||,) ;
end
else
begin
if(Chunk =TRIM("_LAST")) then
begin
stmt_select = stmt_select || ||,||trim(coalesce(||TRIM(Chunk)||,0))||) from ||TABLENAME|| ||condicao;
end
else
begin
stmt_select = stmt_select || ||,||trim(coalesce(||TRIM(Chunk)||,0)) ;
end
end
end


for execute statement stmt_select into :longline
do



suspend;
end
GOSTEI 0
POSTAR