Ir para conteúdo

POWERED BY:

Arquivado

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

KUROL3

[Resolvido] Campo IN (varchar) não seleciona

Recommended Posts

Olá estou eu aqui novamente...

 

estou tentando fazer o seguinte comando

 

//dentro de id_eventos na tabela tipo_eventos_somado é campo varchar com o valor '4,10,9,60'

 

SELECT dbo.soma_debitos(3,0,2, 1, (select id_eventos from tipo_eventos_somado where id = 10))

 

 

ABAIXO MINHA FUNÇÃO

DECLARE @valor decimal(10,2);

SET @valor =  ISNULL(
                     (
                       SELECT
                         ISNULL(SUM(EVT.CtrEvtVlr), 0)
                       FROM
                         EVT
                       WHERE
                           EVT.CtrCod      = @id_contrato    AND /* int */
                           EVT.CtrSeq      = @id_sequencia   AND /* int */
                           EVT.CtrDV       = @id_digito      AND /* int */
                           EVT.CtrParc     = @id_parcela     AND /* int */
                           EVT.HisCodEvt   IN (@id_eventos)  AND /* varchar 150 */
                           EVT.CtrEvtDeb 	= 1
                     )
             , 0)

return @valor;

ERRO: Category Timestamp Message

Statusbar 21/04/2011 12:04:30 SQL Server Database Error: Conversion failed when converting the varchar value '4,10,9,60' to data type smallint.

 

Teria como fazer essa função funcionar?

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

estou tentando essa

 

 

Jothaz tudo bem ?

esses dias eu tive que lidar com esse tipo de caso, usar IN dinâmico dentro de uma query, vai um exemplo que como eu resolvi, não foge muito o que você fez:

 

USE PUBS

 

CREATE PROCEDURE EXEMPLEJOBS

 

@MAX VARCHAR(50)

 

AS BEGIN EXEC('SELECT * FROM PUBS.DBO.JOBS WHERE MAX_LVL IN (' + @MAX + ')')

END

 

 

 

usando a procedure:

 

EXEC EXEMPLEJOBS '100,175'

 

 

.: David Ramires :.

 

 

 

 

agora como eu seleciono dentro do meu select tipo

SELECT 10 AS alias_teste, EXEC EXEMPLEJOBS '100,175' as teste2

 

 

ou ainda neste outro caso

        declare @Ini    int
       declare @Fim    int
       declare @item           varchar(10)
       declare @tmp_itens table(trecho varchar(100))
       declare @itens varchar(1000)

       set @itens = 'TRE03-01,TRE03-02,TRE03-03,'
       set @Ini = 0
       set @Fim = charindex(',', @itens, @Ini)

       while (@Fim > 0)
       begin
               set @item = substring(@itens, @Ini, @Fim - @Ini)

               insert into @tmp_itens (trecho) values (cast(@item as varchar(10)))

               set @Ini = charindex(',', @itens, @Ini + 1)+1
               set @Fim = charindex(',', @itens, @Ini)

       end

 

como eu comparar o retorno dessa função com o meu IN (), não estou conseguindo nem criar a função erro "Must declare the scalar variable "@tmp_itens"." pq esta dando erro.

 

Obrigado

Marco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a versão do SQL?

Pelo que eu me lembre, dentro de funções não é possível declarar variaveis (@) do tipo table, a não ser no retorno.

 

 

 

 

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.