erro com criação de SP
Estou tentando criar a seguinte SP mas está dando erro!
O código é:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
O código é:
create procedure PROC_VERIFICA_ACESSO_MENU(
CODUSUARIO integer, CODMENU integer)
RETURNS (CONSULTAR char (1))
as
declare variable gu_consultar boolean;
begin
consultar = ''N'';
for select pu_consultar from permissao_usuario
where usu_codigo = :codusuario and
men_codigo = :codmenu
union
select pg_consultar from permissao_usuario
where gru_codigo in (
select gru_codigo from grupo_usuario
where usu_codigo = :codusuario) and
men_codigo = :codmenu
into :gu_consultar
do
begin
if (:gu_consultar = true) then
begin
consultar = ''S'';
exit;
end
end
end
Nícolas Braz
Curtidas 0
Melhor post
Claudia Nogueira
19/12/2012
Consegui criar dessa forma:
Como o meu não aceita boolean, eu troquei pra integer, e onde estava if (:gu_consultar = True) then troquei para if (gu_consultar = 1) then.
CREATE OR ALTER procedure PROC_VERIFICA_ACESSO_MENU (
CODUSUARIO integer,
CODMENU integer)
returns (
CONSULTAR char(1) collate NONE)
as
declare variable GU_CONSULTAR integer;
begin
consultar = 'N';
for select pu_consultar
from permissao_usuario
where usu_codigo = :codusuario
and men_codigo = :codmenu
union all
select pg_consultar
from permissao_usuario
where gru_codigo in (select gru_codigo
from grupo_usuario
where usu_codigo = :codusuario)
and men_codigo = :codmenu
into :gu_consultar
do
begin
if (gu_consultar = 1) then
begin
consultar = 'S';
exit;
end
end
end
Como o meu não aceita boolean, eu troquei pra integer, e onde estava if (:gu_consultar = True) then troquei para if (gu_consultar = 1) then.
GOSTEI 1
Mais Respostas
William
19/12/2012
A base de dados foi criada em qual versão do Firebird?
A versão do Firebird q vc está tentando criar está Procedure é a mesma da base de dados?
A versão do Firebird q vc está tentando criar está Procedure é a mesma da base de dados?
GOSTEI 0
Ricardo Lima
19/12/2012
Desculpa se for repetitivo, mas não entendi muito bem, no meu código esta assim
APARECE O ERRO:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
O que estou fazendo de errado?
Ao tentar criar a seguinte procedure create procedure sp_raise_error (pUsuario integer, pTabela d_tabela, pOpr d_operacao) as declare variable v_incluir nous; declare variable v_alterar nous; declare variable v_excluir nous; declare variable v_ver nous; begin select incluir, alterar, excluir, ver from acesso where usuarioacesso = :pUsuario and tabela= :pTabela into :v_incluir, :v_alterar, :v_excluir, :v_ver; if (row_count = 0) then exception acess_deny; if ((:popr = 'I') AND (:v_incluir = 'N')) then EXCEPTION acess_deny; if ((:popr = 'A') AND (:v_alterar = 'N')) then EXCEPTION acess_deny; if ((:popr = 'E') AND (:v_excluir = 'N')) then EXCEPTION acess_deny; if ((:popr = 'V') AND (:v_ver = 'N')) then EXCEPTION acess_deny; end
APARECE O ERRO:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
O que estou fazendo de errado?
GOSTEI 0
Ricardo Lima
19/12/2012
Desculpa se for repetitivo, mas não entendi muito bem, no meu código esta assim
APARECE O ERRO:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
O que estou fazendo de errado?
Ao tentar criar a seguinte procedure create procedure sp_raise_error (pUsuario integer, pTabela d_tabela, pOpr d_operacao) as declare variable v_incluir nous; declare variable v_alterar nous; declare variable v_excluir nous; declare variable v_ver nous; begin select incluir, alterar, excluir, ver from acesso where usuarioacesso = :pUsuario and tabela= :pTabela into :v_incluir, :v_alterar, :v_excluir, :v_ver; if (row_count = 0) then exception acess_deny; if ((:popr = 'I') AND (:v_incluir = 'N')) then EXCEPTION acess_deny; if ((:popr = 'A') AND (:v_alterar = 'N')) then EXCEPTION acess_deny; if ((:popr = 'E') AND (:v_excluir = 'N')) then EXCEPTION acess_deny; if ((:popr = 'V') AND (:v_ver = 'N')) then EXCEPTION acess_deny; end
APARECE O ERRO:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
O que estou fazendo de errado?
UTILIZO O FIREBIRD 2.5,
nous = DOMAIN que verifica se e N ou S
GOSTEI 0
Ricardo Lima
19/12/2012
EVMEDIA
download post favorito comentários
Video: Curso Online-Automação Comercial em Delphi com OOP, BPLS e FIREBIRD(Avançado)-Parte III-Continuando com a criação das Stored Procedures da aplicação
Veremos também nesta vídeo-aula, a utilização de exceptions para realizar o bloqueio de determinadas ações aos usuários.
0
Gostei (3) (0)
Atenção! Este vídeo necessita do aplicativo DevMedia Player para ser executada. Clique aqui para baixar o aplicativo
Título: Curso Online-Automação Comercial em Delphi com OOP, BPLS e FIREBIRD(Avançado)-Parte III-Continuando com a criação das Stored Procedures da aplicação
Tempo: 21:00 min
Mini Resumo: Essa é a terceira vídeo-aula do curso de automação comercial. Nesse vídeo iremos dar continuidade a criação de stored procedures. Dessa vez iremos criar um procedimento genérico para o tratamento da segurança dos métodos de inclusão, alteração e deleção. Usaremos um recurso interessante que é a utilização de exceptions para realizar o bloqueio de determinadas ações. Veja como é interessante adotar procedimentos para manipulação de dados e garantir não só a padronização das chamadas como também a organização e centralização das regras de negócio. Além do controle de acesso daremos início a criação de stored procedures para manutenção de grupos, produtos e pessoas. Padronização é tudo!
Tecnologias utilizadas: Bematech, Delphi 6, BPLS, Firebird, Herança Visual e OOP.
Palavras chaves: OOP, Firebird, Automação, BPLS, Bematech.
Este post faz parte do Curso Automação Comercial em Delphi com OOP, BPLS e FIREBIRD(Avançado)
DevMedia [renato Matos]
12 anos de experiência em desenvolvimento de software.
O que você achou deste post?
Gostei (3) (0)
Comentário | Tire sua dúvida
Alex Da Solva Barbosa
Professor, muito boa suas aulas... bem objetivas, mas tranqueina procedore de produtos, fiz igual esta orientado, mas da um erro, como posso conseguir ajuda?
abraço
Alex
[há +1 ano] - Responder
Alex Da Solva Barbosa
Professor vou colar o codigo para ver se tem algo errado
create procedure sp_produtos (
pCodigo d_inteiro,
pCodigodebarras d_barras,
pNome d_nome,
pGrupo d_inteiro,
pValorvenda d_valor,
pValorcompra d_valor,
pICMS d_valor,
pSubst d_n_ou_s,
pIsento d_n_ou_s,
pIncidencia d_n_ou_s,
pOpr d_opr,
pUsuario d_inteiro
)
as
begin
execute procedure sp_raise_error (pUsuario, 'PRODUTOS', pOpr);
if (popr = 'I') then
insert into produtos (codigo, codigodebarras, Nome, grupo, Valor_venda, Valor_compra, ICMS, e_Substituto, e_isento, sem_incidencia)
values (:pCodigo, :pcodigodebarras, :pNome, :pgrupo, :pValor_venda, :pValor_compra, :pICMS, :pSubst, :pisento, :pincidencia)
if (popr = 'A') then
update produtos
set Codigodebarras = :pcodigodebarras,
Nome= :pNome,
grupo= :pGrupo,
Valor_venda=:pValorVenda,
Valor_Compra=:pValorCompra,
ICMS =:pICMS,
e_Substituto= :pSubst,
e_isento= :pisento,
sem_incidencia= :pincidencia
where Codigo = :pcodigo;
if (pOpr = 'E') then
delete from produtos
where codigo = :pCodigo;
end;
[há +1 ano] - Responder
Luis Carlos Godinho
Olá!
Alguns fatores podem levar a dar problema quando se usa store procedures. O problema pode estar na instrução do banco de dados ou até mesmo na codificação do delphi.
Se puder, me envie o banco de dados em questão para que eu verifique aqui e tente te ajudar.
luis.c.godinho@hotmail.com
Abs.!
[há +1 ano] - Responder
Neimar Egio Sversute
Ao criar a seguinte procedure:
create procedure sp_get_gerador (pNome varchar(50)) returns (pValor d_inteiro)
as
declare variable vStm varchar(500);
begin
vStm = 'select next value for ' || pNome || ' from rdb$databases';
execute statement vStm into :pValor;
suspend;
end;
Acontece o seguinte erro:
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 3, column 34
o que está errado
[há +1 ano] - Responder
Joel Rodrigues
O tipo d_inteiro está criado?
[há +1 mês] - Responder
Filipi Grijó Reis
Mestre boa noite,
Ao adicionar a procedure abaixo:
CREATE PROCEDURE "sp_get_gerador" (pNome Varchar(50)) returns (pValor INTEGER)
AS
DECLARE VARIABLE vStm Varchar(500);
BEGIN
vStm = 'select next value for ' || pNome || ' from rdb$database';
EXECUTE STATEMENT vStm INTO :pValor;
SUSPEND;
END;
Estou recebendo o seguinte erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, column 8.
STATEMENT.
Poderia me ajudar ?
[há +1 ano] - Responder
Luis Carlos Godinho
Olá!
Eu rodei esta SQL de criação da procedure aqui e criou normalmente.
Estou usando o FB 2.5, qual versão esta usando ai?
Abs.!
[há +1 ano] - Responder
Marcelo Barreto
boa noite estou com mesmo problema do meu colega ai encima ja refiz o banco 4x achando que poderia ter digitando algo errado mais sempre acontece o mesmo problema esto com fire.. 2.5 tambem mas nao esta dando certo,Se for possível mim ajuda ficarei muito grato
[há +1 ano] - Responder
Wesley Yamazack
Olá qual é o erro que você está tendo?
Um abraço e até mais.
[há +1 ano] - Responder
Geovany Silveira Araújo
Criar a procedure o firebird faz numa boa. O problema é quando se faz a consulta aí a procedure retorna o erro: Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, column 8.
STATEMENT.
E agora?
[há +1 mês] - Responder
Daniel Sobrinho Laporte
Olá,
Tem como enviar o seu exemplo para meu e-mail para que eu verifique pra você?
Abraços,
Daniel
[há +1 mês] - Responder
Ricardo Caldeira
Ao tentar criar a seguinte procedure
create procedure sp_raise_error (pUsuario integer, pTabela d_tabela, pOpr d_operacao)
as
declare variable v_incluir nous;
declare variable v_alterar nous;
declare variable v_excluir nous;
declare variable v_ver nous;
begin
select incluir, alterar, excluir, ver
from acesso
where usuarioacesso = :pUsuario
and tabela= :pTabela
into :v_incluir, :v_alterar, :v_excluir, :v_ver;
if (row_count = 0) then
exception acess_deny;
if ((:popr = 'I') AND (:v_incluir = 'N')) then
EXCEPTION acess_deny;
if ((:popr = 'A') AND (:v_alterar = 'N')) then
EXCEPTION acess_deny;
if ((:popr = 'E') AND (:v_excluir = 'N')) then
EXCEPTION acess_deny;
if ((:popr = 'V') AND (:v_ver = 'N')) then
EXCEPTION acess_deny;
end
APARECE O ERRO:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
COMO PODERIA RESOLVER ISSO?
[hoje] - Responder
Ricardo Caldeira
Esqueci de dizer que estou utilizando o FIREBIRD 2.5
[hoje] - Responder
Ricardo Caldeira MVP
Descobri, mas não entendi.
eu retirei os domains e coloquei de forma normal, integer varchar e etc...
funcionou...
será se e por que o charset esta em ISO8859_1, não sei nem por que esta assim, eu não coloquei.
Tentei mudar para wIN1250 mas não adiantou.
E recomendado colocar como?
vou dropar tudo e fazer de novo, aguardando instruções para começar
download post favorito comentários
Video: Curso Online-Automação Comercial em Delphi com OOP, BPLS e FIREBIRD(Avançado)-Parte III-Continuando com a criação das Stored Procedures da aplicação
Veremos também nesta vídeo-aula, a utilização de exceptions para realizar o bloqueio de determinadas ações aos usuários.
0
Gostei (3) (0)
Atenção! Este vídeo necessita do aplicativo DevMedia Player para ser executada. Clique aqui para baixar o aplicativo
Título: Curso Online-Automação Comercial em Delphi com OOP, BPLS e FIREBIRD(Avançado)-Parte III-Continuando com a criação das Stored Procedures da aplicação
Tempo: 21:00 min
Mini Resumo: Essa é a terceira vídeo-aula do curso de automação comercial. Nesse vídeo iremos dar continuidade a criação de stored procedures. Dessa vez iremos criar um procedimento genérico para o tratamento da segurança dos métodos de inclusão, alteração e deleção. Usaremos um recurso interessante que é a utilização de exceptions para realizar o bloqueio de determinadas ações. Veja como é interessante adotar procedimentos para manipulação de dados e garantir não só a padronização das chamadas como também a organização e centralização das regras de negócio. Além do controle de acesso daremos início a criação de stored procedures para manutenção de grupos, produtos e pessoas. Padronização é tudo!
Tecnologias utilizadas: Bematech, Delphi 6, BPLS, Firebird, Herança Visual e OOP.
Palavras chaves: OOP, Firebird, Automação, BPLS, Bematech.
Este post faz parte do Curso Automação Comercial em Delphi com OOP, BPLS e FIREBIRD(Avançado)
DevMedia [renato Matos]
12 anos de experiência em desenvolvimento de software.
O que você achou deste post?
Gostei (3) (0)
Comentário | Tire sua dúvida
Alex Da Solva Barbosa
Professor, muito boa suas aulas... bem objetivas, mas tranqueina procedore de produtos, fiz igual esta orientado, mas da um erro, como posso conseguir ajuda?
abraço
Alex
[há +1 ano] - Responder
Alex Da Solva Barbosa
Professor vou colar o codigo para ver se tem algo errado
create procedure sp_produtos (
pCodigo d_inteiro,
pCodigodebarras d_barras,
pNome d_nome,
pGrupo d_inteiro,
pValorvenda d_valor,
pValorcompra d_valor,
pICMS d_valor,
pSubst d_n_ou_s,
pIsento d_n_ou_s,
pIncidencia d_n_ou_s,
pOpr d_opr,
pUsuario d_inteiro
)
as
begin
execute procedure sp_raise_error (pUsuario, 'PRODUTOS', pOpr);
if (popr = 'I') then
insert into produtos (codigo, codigodebarras, Nome, grupo, Valor_venda, Valor_compra, ICMS, e_Substituto, e_isento, sem_incidencia)
values (:pCodigo, :pcodigodebarras, :pNome, :pgrupo, :pValor_venda, :pValor_compra, :pICMS, :pSubst, :pisento, :pincidencia)
if (popr = 'A') then
update produtos
set Codigodebarras = :pcodigodebarras,
Nome= :pNome,
grupo= :pGrupo,
Valor_venda=:pValorVenda,
Valor_Compra=:pValorCompra,
ICMS =:pICMS,
e_Substituto= :pSubst,
e_isento= :pisento,
sem_incidencia= :pincidencia
where Codigo = :pcodigo;
if (pOpr = 'E') then
delete from produtos
where codigo = :pCodigo;
end;
[há +1 ano] - Responder
Luis Carlos Godinho
Olá!
Alguns fatores podem levar a dar problema quando se usa store procedures. O problema pode estar na instrução do banco de dados ou até mesmo na codificação do delphi.
Se puder, me envie o banco de dados em questão para que eu verifique aqui e tente te ajudar.
luis.c.godinho@hotmail.com
Abs.!
[há +1 ano] - Responder
Neimar Egio Sversute
Ao criar a seguinte procedure:
create procedure sp_get_gerador (pNome varchar(50)) returns (pValor d_inteiro)
as
declare variable vStm varchar(500);
begin
vStm = 'select next value for ' || pNome || ' from rdb$databases';
execute statement vStm into :pValor;
suspend;
end;
Acontece o seguinte erro:
ISC ERROR CODE:335544569
ISC ERROR MESSAGE:
Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 3, column 34
o que está errado
[há +1 ano] - Responder
Joel Rodrigues
O tipo d_inteiro está criado?
[há +1 mês] - Responder
Filipi Grijó Reis
Mestre boa noite,
Ao adicionar a procedure abaixo:
CREATE PROCEDURE "sp_get_gerador" (pNome Varchar(50)) returns (pValor INTEGER)
AS
DECLARE VARIABLE vStm Varchar(500);
BEGIN
vStm = 'select next value for ' || pNome || ' from rdb$database';
EXECUTE STATEMENT vStm INTO :pValor;
SUSPEND;
END;
Estou recebendo o seguinte erro:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, column 8.
STATEMENT.
Poderia me ajudar ?
[há +1 ano] - Responder
Luis Carlos Godinho
Olá!
Eu rodei esta SQL de criação da procedure aqui e criou normalmente.
Estou usando o FB 2.5, qual versão esta usando ai?
Abs.!
[há +1 ano] - Responder
Marcelo Barreto
boa noite estou com mesmo problema do meu colega ai encima ja refiz o banco 4x achando que poderia ter digitando algo errado mais sempre acontece o mesmo problema esto com fire.. 2.5 tambem mas nao esta dando certo,Se for possível mim ajuda ficarei muito grato
[há +1 ano] - Responder
Wesley Yamazack
Olá qual é o erro que você está tendo?
Um abraço e até mais.
[há +1 ano] - Responder
Geovany Silveira Araújo
Criar a procedure o firebird faz numa boa. O problema é quando se faz a consulta aí a procedure retorna o erro: Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 6, column 8.
STATEMENT.
E agora?
[há +1 mês] - Responder
Daniel Sobrinho Laporte
Olá,
Tem como enviar o seu exemplo para meu e-mail para que eu verifique pra você?
Abraços,
Daniel
[há +1 mês] - Responder
Ricardo Caldeira
Ao tentar criar a seguinte procedure
create procedure sp_raise_error (pUsuario integer, pTabela d_tabela, pOpr d_operacao)
as
declare variable v_incluir nous;
declare variable v_alterar nous;
declare variable v_excluir nous;
declare variable v_ver nous;
begin
select incluir, alterar, excluir, ver
from acesso
where usuarioacesso = :pUsuario
and tabela= :pTabela
into :v_incluir, :v_alterar, :v_excluir, :v_ver;
if (row_count = 0) then
exception acess_deny;
if ((:popr = 'I') AND (:v_incluir = 'N')) then
EXCEPTION acess_deny;
if ((:popr = 'A') AND (:v_alterar = 'N')) then
EXCEPTION acess_deny;
if ((:popr = 'E') AND (:v_excluir = 'N')) then
EXCEPTION acess_deny;
if ((:popr = 'V') AND (:v_ver = 'N')) then
EXCEPTION acess_deny;
end
APARECE O ERRO:
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Feature not supported on ODS version older than 11.1.
COMO PODERIA RESOLVER ISSO?
[hoje] - Responder
Ricardo Caldeira
Esqueci de dizer que estou utilizando o FIREBIRD 2.5
[hoje] - Responder
Ricardo Caldeira MVP
Descobri, mas não entendi.
eu retirei os domains e coloquei de forma normal, integer varchar e etc...
funcionou...
será se e por que o charset esta em ISO8859_1, não sei nem por que esta assim, eu não coloquei.
Tentei mudar para wIN1250 mas não adiantou.
E recomendado colocar como?
vou dropar tudo e fazer de novo, aguardando instruções para começar
GOSTEI 0
Deivison Melo
19/12/2012
Qual sua versão do firebird?
Dependendo da sua versão do firebird o tipo boolean não será permitido!!
Consulte a documentação!
Abração e bons códigos!!
Emanoel Deivison
Recife - PE
create procedure PROC_VERIFICA_ACESSO_MENU(CODUSUARIO integer, CODMENU integer)
RETURNS (CONSULTAR varchar (1)) as
declare variable gu_consultar boolean;
begin
consultar = 'N';
for select pu_consultar
from permissao_usuario
where usu_codigo = :codusuario
and men_codigo = :codmenu
union
select pg_consultar
from permissao_usuario
where gru_codigo in (
select gru_codigo
from grupo_usuario
where usu_codigo = :codusuario)
and men_codigo = :codmenu
into :gu_consultar
do
begin
if (:gu_consultar = true) then
begin
consultar = 'S';
exit;
end
end
end
Dependendo da sua versão do firebird o tipo boolean não será permitido!!
Consulte a documentação!
Abração e bons códigos!!
Emanoel Deivison
Recife - PE
GOSTEI 0