Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rodolfo_cvp

como chamar uma function num select

Recommended Posts

ai galera to com um probleminha nesse select...criei uma function para armazenar um cursor...o que esse cursor faz....concatena varios campos de varias tabelas diferentes...agora esbarrei nessa parada...eu queria colocar essa function pq um select não consegue executar uma procedure....mas mostra um function e eu quero que essa function seja como um campo no select....o select é esse ai:SELECT p.proCodigo,-- codigo produto localc.catDescricao,-- descricao categoria importadaes.emuDescricao, --descricao estilo musical importadaem.embDescricao,--descricao embalagem importada ca.canDescricao, --descricao cantor importada p.proDescricao, -- descricao produto localp.proPreco_venda, -- preco de venda locale.estQuantidade, -- quantidade estoque importadap.proPreco_custo, (select estCodigo from FN_estoque_inLine (proCodigo)) << AQUI TA A FUNCTION DE TESTE QUE TO USANDOFROM tblCategoria as c, tblEmbalagem as em, tblCodigoBarra as cod, tblProduto as pLEFT OUTER JOIN tblEstilo_musical as es ON es.emuCodigo = p.emuCodigo LEFT OUTER JOIN tblCantor as ca ON ca.canCodigo = p.canCodigo LEFT OUTER JOIN tblEstoque as e ON e.proCodigo = p.proCodigo WHEREcod.barCodigoBarra = @barCodigoBarraAND p.catCodigo = c.catCodigo AND p.embCodigo = em.embCodigo AND cod.proCodigo = p.proCodigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

ai galera to com um probleminha nesse select...criei uma function para armazenar um cursor...o que esse cursor faz....concatena varios campos de varias tabelas diferentes...agora esbarrei nessa parada...

 

eu queria colocar essa function pq um select não consegue executar uma procedure....mas mostra um function e eu quero que essa function seja como um campo no select....

Cara normalmente usa-se assim:

 

SELECT p.proCodigo,-- codigo produto localc.catDescricao,-- descricao categoria importadaes.emuDescricao, --descricao estilo musical importadaem.embDescricao,--descricao embalagem importada ca.canDescricao, --descricao cantor importada p.proDescricao, -- descricao produto localp.proPreco_venda, -- preco de venda locale.estQuantidade, -- quantidade estoque importadap.proPreco_custo, [color="#cc0000"]'ESTOQUEINLINE' = DBO.FN_estoque_inLine (proCodigo) [/color]-- << AQUI TA A FUNCTION DE TESTE QUE TO USANDOFROM tblCategoria as c, tblEmbalagem as em, tblCodigoBarra as cod, tblProduto as pLEFT OUTER JOIN tblEstilo_musical as es ON es.emuCodigo = p.emuCodigo LEFT OUTER JOIN tblCantor as ca ON ca.canCodigo = p.canCodigo LEFT OUTER JOIN tblEstoque as e ON e.proCodigo = p.proCodigo WHEREcod.barCodigoBarra = @barCodigoBarraAND p.catCodigo = c.catCodigo AND p.embCodigo = em.embCodigo AND cod.proCodigo = p.proCodigo
Função é retornada como um unico valor, então pode(DEVE) ser executada diretamente no select como um campo. Coloquei um alias 'ESTOQUEINLINE' só para exemplificar.

 

T++

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

ai galera to com um probleminha nesse select...criei uma function para armazenar um cursor...o que esse cursor faz....concatena varios campos de varias tabelas diferentes...agora esbarrei nessa parada...

 

eu queria colocar essa function pq um select não consegue executar uma procedure....mas mostra um function e eu quero que essa function seja como um campo no select....

Cara normalmente usa-se assim:

 

SELECT p.proCodigo,-- codigo produto localc.catDescricao,-- descricao categoria importadaes.emuDescricao, --descricao estilo musical importadaem.embDescricao,--descricao embalagem importada ca.canDescricao, --descricao cantor importada p.proDescricao, -- descricao produto localp.proPreco_venda, -- preco de venda locale.estQuantidade, -- quantidade estoque importadap.proPreco_custo, [color="#cc0000"]'ESTOQUEINLINE' = DBO.FN_estoque_inLine (proCodigo) [/color]-- << AQUI TA A FUNCTION DE TESTE QUE TO USANDOFROM tblCategoria as c, tblEmbalagem as em, tblCodigoBarra as cod, tblProduto as pLEFT OUTER JOIN tblEstilo_musical as es ON es.emuCodigo = p.emuCodigo LEFT OUTER JOIN tblCantor as ca ON ca.canCodigo = p.canCodigo LEFT OUTER JOIN tblEstoque as e ON e.proCodigo = p.proCodigo WHEREcod.barCodigoBarra = @barCodigoBarraAND p.catCodigo = c.catCodigo AND p.embCodigo = em.embCodigo AND cod.proCodigo = p.proCodigo
Função é retornada como um unico valor, então pode(DEVE) ser executada diretamente no select como um campo. Coloquei um alias 'ESTOQUEINLINE' só para exemplificar.

 

T++

 

esse ' = ' que voce colocou invalidou a procedure...

deu erro de sintaxe no '='

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala camarada......pow sql ta dificutando para mim....num pode declarar nada da functionnum pode executar nada no select....ah eu num aguento!!! hueheuheuhecomo eu vo fazer executar uma procedure dentro do select...ou fazer com que a function aceite um 'DECLARE'....por favor me ajudem...DECLARE @intProduto int SELECT @intProduto = proCodigo from tblCodigoBarra WHERE barCodigoBarra = @barCodigoBarra DECLARE @strEstoque varchar(1000) exec vox_estoque_produto_s @intProduto--retorna um produto pelo código de barras SELECT p.proCodigo, -- codigo produto local c.catDescricao,-- descricao categoria importada es.emuDescricao, --descricao estilo musical importada em.embDescricao,--descricao embalagem importada ca.canDescricao, --descricao cantor importada p.proDescricao, -- descricao produto local p.proPreco_venda, -- preco de venda local e.estQuantidade, -- quantidade estoque importada p.proPreco_custo, @strEstoque FROM tblCategoria as c, tblEmbalagem as em, tblCodigoBarra as cod, tblProduto as p LEFT OUTER JOIN tblEstilo_musical as es ON es.emuCodigo = p.emuCodigo LEFT OUTER JOIN tblCantor as ca ON ca.canCodigo = p.canCodigo LEFT OUTER JOIN tblEstoque as e ON e.proCodigo = p.proCodigo WHERE cod.barCodigoBarra = @barCodigoBarra AND p.catCodigo = c.catCodigo AND p.embCodigo = em.embCodigo AND cod.proCodigo = p.proCodigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

<_< <_< <_<

 

Não entendi o porquê de não dar certo. Compilei esse códgo e funcionou...

 

 

SELECT p.proCodigo,-- codigo produto localc.catDescricao,-- descricao categoria importadaes.emuDescricao, --descricao estilo musical importadaem.embDescricao,--descricao embalagem importada ca.canDescricao, --descricao cantor importada p.proDescricao, -- descricao produto localp.proPreco_venda, -- preco de venda locale.estQuantidade, -- quantidade estoque importadap.proPreco_custo, DBO.FN_estoque_inLine (proCodigo)  as 'ESTOQUEINLINE' -- << AQUI TA A FUNCTION DE TESTE QUE TO USANDOFROM tblCategoria as c, tblEmbalagem as em, tblCodigoBarra as cod, tblProduto as pLEFT OUTER JOIN tblEstilo_musical as es ON es.emuCodigo = p.emuCodigo LEFT OUTER JOIN tblCantor as ca ON ca.canCodigo = p.canCodigo LEFT OUTER JOIN tblEstoque as e ON e.proCodigo = p.proCodigo WHEREcod.barCodigoBarra = @barCodigoBarraAND p.catCodigo = c.catCodigo AND p.embCodigo = em.embCodigo AND cod.proCodigo = p.proCodigo

Att+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.