Dúvida urgente! Importação de Script para banco de dados Firebird
Olá amigos!
Precico importar o seguinte script de um Stored Procedure através do delphi para atualizar um banco de dados:
Estou tentando fazer isso através do IBScript, outro script sem os SET TERM funcionou, porem este não funciona, ele importa o scrpit mas não completo e sem os SET TERM, por favor me ajudem.
Grato
Precico importar o seguinte script de um Stored Procedure através do delphi para atualizar um banco de dados:
SET TERM ^ ;
create or alter procedure PRODUTO_IU (
ID type of column PRODUTO.ID,
ID_UNIDADE_PRODUTO type of column PRODUTO.ID_UNIDADE_PRODUTO,
GTIN type of column PRODUTO.GTIN,
CODIGO_INTERNO type of column PRODUTO.CODIGO_INTERNO,
NOME type of column PRODUTO.NOME,
DESCRICAO type of column PRODUTO.DESCRICAO,
DESCRICAO_PDV type of column PRODUTO.DESCRICAO_PDV,
VALOR_VENDA type of column PRODUTO.VALOR_VENDA,
QTD_ESTOQUE type of column PRODUTO.QTD_ESTOQUE,
QTD_ESTOQUE_ANTERIOR type of column PRODUTO.QTD_ESTOQUE_ANTERIOR,
ESTOQUE_MIN type of column PRODUTO.ESTOQUE_MIN,
ESTOQUE_MAX type of column PRODUTO.ESTOQUE_MAX,
IAT type of column PRODUTO.IAT,
IPPT type of column PRODUTO.IPPT,
NCM type of column PRODUTO.NCM,
TIPO_ITEM_SPED type of column PRODUTO.TIPO_ITEM_SPED,
DATA_ESTOQUE type of column PRODUTO.DATA_ESTOQUE,
CST type of column PRODUTO.CST,
CSOSN type of column PRODUTO.CSOSN,
ECF_ICMS_ST type of column PRODUTO.ECF_ICMS_ST,
CODIGO_BALANCA type of column PRODUTO.CODIGO_BALANCA,
PAF_P_ST type of column PRODUTO.PAF_P_ST,
PROMOCAO type of column PRODUTO.PROMOCAO)
as
begin
if (exists(select id from produto where (id = :id))) then
update produto
set id_unidade_produto = :id_unidade_produto,
gtin = :gtin,
codigo_interno = :codigo_interno,
nome = :nome,
descricao = :descricao,
descricao_pdv = :descricao_pdv,
valor_venda = :valor_venda,
qtd_estoque = :qtd_estoque,
qtd_estoque_anterior = :qtd_estoque_anterior,
estoque_min = :estoque_min,
estoque_max = :estoque_max,
iat = :iat,
ippt = :ippt,
ncm = :ncm,
tipo_item_sped = :tipo_item_sped,
data_estoque = :data_estoque,
cst = :cst,
csosn = :csosn,
ecf_icms_st = :ecf_icms_st,
codigo_balanca = :codigo_balanca,
paf_p_st = :paf_p_st,
promocao=:promocao
where (id = :id);
else
insert into produto (
id,
id_unidade_produto,
gtin,
codigo_interno,
nome,
descricao,
descricao_pdv,
valor_venda,
qtd_estoque,
qtd_estoque_anterior,
estoque_min,
estoque_max,
iat,
ippt,
ncm,
tipo_item_sped,
data_estoque,
cst,
csosn,
ecf_icms_st,
codigo_balanca,
paf_p_st,promocao)
values (
:id,
:id_unidade_produto,
:gtin,
:codigo_interno,
:nome,
:descricao,
:descricao_pdv,
:valor_venda,
:qtd_estoque,
:qtd_estoque_anterior,
:estoque_min,
:estoque_max,
:iat,
:ippt,
:ncm,
:tipo_item_sped,
:data_estoque,
:cst,
:csosn,
:ecf_icms_st,
:codigo_balanca,
:paf_p_st,
:promocao);
end^
SET TERM ; ^
GRANT SELECT,INSERT,UPDATE ON PRODUTO TO PROCEDURE PRODUTO_IU;
GRANT EXECUTE ON PROCEDURE PRODUTO_IU TO SYSDBA;
Estou tentando fazer isso através do IBScript, outro script sem os SET TERM funcionou, porem este não funciona, ele importa o scrpit mas não completo e sem os SET TERM, por favor me ajudem.
Grato
Wellington Menezes
Curtidas 0
Respostas
Luiz Menin
14/12/2012
Tente utilizar o TQuery.
GOSTEI 0
Wellington Menezes
14/12/2012
Já tentei, mas pela TSqlQuery o scrpit não chega a ser executado...
GOSTEI 0
William
14/12/2012
Colega senão me falha a memória componentes da paleta DBExpress não executam esse tipo de script.
O colega Marco Salles moderador do fórum, tem um blog onde ensina a criar tabelas usando TDBXConnection e outras classes, acho q deve ajudar vc.
Segue o link:
[url]http://marcosalles.wordpress.com/2011/06/15/manipulando-metadados-criando-tabelas-campos-chaves-estrangeiras-utilizando-o-framework-dbxexpress-sem-dataset-delphi-2010-parte-iii/[/url]
O colega Marco Salles moderador do fórum, tem um blog onde ensina a criar tabelas usando TDBXConnection e outras classes, acho q deve ajudar vc.
Segue o link:
[url]http://marcosalles.wordpress.com/2011/06/15/manipulando-metadados-criando-tabelas-campos-chaves-estrangeiras-utilizando-o-framework-dbxexpress-sem-dataset-delphi-2010-parte-iii/[/url]
GOSTEI 0
Claudia Nogueira
14/12/2012
Você não precisa colocar o SET TERM no script, pois o SET TERM serve apenas para mudar o caractere que termina um comando, pra separar um do outro. Então você tem que mudar a propriedade Terminator do IbScript para ^ e seu script tem que ficar assim:
Agora sempre que você for usar esse IbScript e tiver mais de um comando, você vai finalizar cada comando com ^ em vez do ;
create or alter procedure PRODUTO_IU ( ID type of column PRODUTO.ID, ID_UNIDADE_PRODUTO type of column PRODUTO.ID_UNIDADE_PRODUTO, GTIN type of column PRODUTO.GTIN, CODIGO_INTERNO type of column PRODUTO.CODIGO_INTERNO, NOME type of column PRODUTO.NOME, DESCRICAO type of column PRODUTO.DESCRICAO, DESCRICAO_PDV type of column PRODUTO.DESCRICAO_PDV, VALOR_VENDA type of column PRODUTO.VALOR_VENDA, QTD_ESTOQUE type of column PRODUTO.QTD_ESTOQUE, QTD_ESTOQUE_ANTERIOR type of column PRODUTO.QTD_ESTOQUE_ANTERIOR, ESTOQUE_MIN type of column PRODUTO.ESTOQUE_MIN, ESTOQUE_MAX type of column PRODUTO.ESTOQUE_MAX, IAT type of column PRODUTO.IAT, IPPT type of column PRODUTO.IPPT, NCM type of column PRODUTO.NCM, TIPO_ITEM_SPED type of column PRODUTO.TIPO_ITEM_SPED, DATA_ESTOQUE type of column PRODUTO.DATA_ESTOQUE, CST type of column PRODUTO.CST, CSOSN type of column PRODUTO.CSOSN, ECF_ICMS_ST type of column PRODUTO.ECF_ICMS_ST, CODIGO_BALANCA type of column PRODUTO.CODIGO_BALANCA, PAF_P_ST type of column PRODUTO.PAF_P_ST, PROMOCAO type of column PRODUTO.PROMOCAO) as begin if (exists(select id from produto where (id = :id))) then update produto set id_unidade_produto = :id_unidade_produto, gtin = :gtin, codigo_interno = :codigo_interno, nome = :nome, descricao = :descricao, descricao_pdv = :descricao_pdv, valor_venda = :valor_venda, qtd_estoque = :qtd_estoque, qtd_estoque_anterior = :qtd_estoque_anterior, estoque_min = :estoque_min, estoque_max = :estoque_max, iat = :iat, ippt = :ippt, ncm = :ncm, tipo_item_sped = :tipo_item_sped, data_estoque = :data_estoque, cst = :cst, csosn = :csosn, ecf_icms_st = :ecf_icms_st, codigo_balanca = :codigo_balanca, paf_p_st = :paf_p_st, promocao=:promocao where (id = :id); else insert into produto ( id, id_unidade_produto, gtin, codigo_interno, nome, descricao, descricao_pdv, valor_venda, qtd_estoque, qtd_estoque_anterior, estoque_min, estoque_max, iat, ippt, ncm, tipo_item_sped, data_estoque, cst, csosn, ecf_icms_st, codigo_balanca, paf_p_st,promocao) values ( :id, :id_unidade_produto, :gtin, :codigo_interno, :nome, :descricao, :descricao_pdv, :valor_venda, :qtd_estoque, :qtd_estoque_anterior, :estoque_min, :estoque_max, :iat, :ippt, :ncm, :tipo_item_sped, :data_estoque, :cst, :csosn, :ecf_icms_st, :codigo_balanca, :paf_p_st, :promocao); end^ GRANT SELECT,INSERT,UPDATE ON PRODUTO TO PROCEDURE PRODUTO_IU^ GRANT EXECUTE ON PROCEDURE PRODUTO_IU TO SYSDBA^
Agora sempre que você for usar esse IbScript e tiver mais de um comando, você vai finalizar cada comando com ^ em vez do ;
GOSTEI 0
Rafael Cunha
14/12/2012
Boa Tarde!
Qual a versão do Delphi você está utilizando? E qual componente você utiliza para realizar a conexão com o banco de dados?
Qual a versão do Delphi você está utilizando? E qual componente você utiliza para realizar a conexão com o banco de dados?
GOSTEI 0
Wellington Menezes
14/12/2012
Boa Tarde!
Qual a versão do Delphi você está utilizando? E qual componente você utiliza para realizar a conexão com o banco de dados?
Qual a versão do Delphi você está utilizando? E qual componente você utiliza para realizar a conexão com o banco de dados?
Neste caso estou usando Delphi 2010 e o componente para conexão IBDatabase
GOSTEI 0
Wellington Menezes
14/12/2012
Olá Claudia, funcionou do jeito que vc sugeriu, obrigado!
GOSTEI 0
Rafael Cunha
14/12/2012
Então você poderá resolver o seu problema como foi citado pela Claudiadnh.
GOSTEI 0