Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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.
Deu certo aqui, acabe criando outra tabela extrangeria e fiz um inner
abraços a tdos que ajudaram
Veja se ajuda.