Fórum Stored Procedures #356861
09/04/2008
0
Aqui está minha procedure:
CREATE OR ALTER PROCEDURE SP_NOME (
cod_cliente integer)
returns (
nome_cliente varchar(50))
as
begin
select nome_cliente from clientes where cod_cliente = :cod_cliente into :nome_cliente;
suspend;
end^
Como podem ver, essa procedure retorna o nome do cliente em função do código.
Sei que podeira fazer isso de forma mais simples pelo Delphi mesmo, mas estou somente tentando entender como recuperar o valor.
Alguém pode me ajudar?
Jonathan Bispo
Curtir tópico
+ 0Posts
09/04/2008
Martins
Aqui está minha procedure:
CREATE OR ALTER PROCEDURE SP_NOME (
cod_cliente integer)
returns (
nome_cliente varchar(50))
as
begin
select nome_cliente from clientes where cod_cliente = :cod_cliente into :nome_cliente;
suspend;
end^
Como podem ver, essa procedure retorna o nome do cliente em função do código.
Sei que podeira fazer isso de forma mais simples pelo Delphi mesmo, mas estou somente tentando entender como recuperar o valor.
Alguém pode me ajudar?[/quote:8365785243]
Já tentou assim?
Editx.Text := IBStoredProc1.ParamByName(´nome_cliente´).AsString; //ou Editx.Text := SQLStoredProc1.ParamByName(´nome_cliente´).AsString;
Gostei + 0
09/04/2008
Rjun
Gostei + 0
09/04/2008
Jonathan Bispo
Creio que o parâmetro de saída é informado no trecho
...returns (nome_cliente varchar(50)) ...
Prova disso, é que dentro do ibExpert a procedure executa normalmente.
Respondendo ao Martins...
Assim não daria certo porque o componente MDOStoredProcedure não reconhece o parâmetro de saída dentro de sua lista de parâmetros.
O valor retornado pela Procedure é retornado como um objeto de TField dentro do DataSet.
Eu tentei fazer dessa forma:
edit1.text := mdostoredprocedure.fields[0].asstring;
Mesmo assim não consegui fazer funcionar.
É como se não houvesse valor a ser retornado.
Galera, valeu a força mas a dúvida continua.
Se tiverem outra sugestão, por favor postem aqui.
Valeu...
Gostei + 0
09/04/2008
Luiz Henrique
Apesar de usar muito pouco store proc nos meus projetos e tambem
nao sei como este componente(MDO so ou falar) que vc esta usando trabalha, mas é + ou - como o RJun comentou, no componente StoreProcedure que esta usando, vc cria um parametro ´OutPut´ com este nome ai que mencionou, ao executar a store proc por ele, o retorno sera no parametro OutPut de memo nome. Por exemplo: no DBExpress seria o TSQLStoreProc, criaria-se este parametro neste objeto.
Espero que tenha ajudado
Abraço , T+
Gostei + 0
10/04/2008
Emerson Nascimento
select * from SP_NOME (cod_cliente)
coloque esta instrução no componente e abra-o como se fosse uma select numa tabela qualquer. no FB as SPs com resultado (SPs selecionáveis) são entendidas como uma tabela.
por exemplo (não conheço os componentes mdo):
mdodataset.close;
mdodataset.commandtext := ´select * from SP_NOME (:cliente)´;
mdodataset.parambyname(´cliente´).asinteger := cod_cliente;
mdodataset.open;
edit1.text := mdodataset.fields[0].asstring;
Gostei + 0
10/04/2008
Jonathan Bispo
Consegui utilizar minha Stored Procedure.
Quando a SP retorna algum valor, realmente tenho que executá-la através de um componente Query, como o Emerson falou.
Quanto a SP não retorna valor, simplesmente passo os parâmetros necessários e a executo, através de um componentes StoredProcedure.
Apesar de não ser da forma que eu pensava funcionou bem.
Mais uma vez, obrigado pela ajuda.
Abraços.
Gostei + 0
10/04/2008
Wianei
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)