none
Erro Procedure RRS feed

  • Pergunta

  • Olá,

    Preciso criar uma procedure que futuramente gerará informações para um relatório, essa procedure gerará um relatório com uma determinada data de corte, ou seja vou ter uma consulta onde consulto todos os registros, depois eu faço um tratamento via cursor para selecionar somente os registros que estão com a sua situação igual a 2 e suas datas estão dentro da data de corte. Muito bem nunca trabalhei com cursores, mas li alguma coisa em um tutorial sobre o assunto e consegui caminhar até aki, será que alguém pde me ajudar daqui para frente.

    Obrigado,


    CREATE PROCEDURE sp_relcorte (@v_datacorte datetime) AS

    DECLARE Cur_Buscacorte cursor for
    SELECT Veiculo.Situacao,
    Veiculo.DataCompra,
    Veiculo_Marca.Descricao As Marca,
    Veiculo_Modelo.Descricao As Modelo,
    Veiculo_ModeloTipo.Descricao As Tipo,
    Veiculo_Combustivel.Descricao As Combustivel,
    Veiculo.Placa, Veiculo_Cor.Descricao As Cor,
    Veiculo.AnoModelo, Veiculo.ValorVenda ,
    Veiculo.Acessorios
    FROM
    Veiculo
    INNER JOIN Veiculo_ModeloTipo On
    Veiculo.Marca = Veiculo_ModeloTipo.Marca And
    Veiculo.Modelo = Veiculo_ModeloTipo.Modelo And
    Veiculo.Tipo = Veiculo_ModeloTipo.Codigo
    INNER JOIN Veiculo_Modelo On
    Veiculo.Marca = Veiculo_Modelo.Marca And
    Veiculo.Modelo = Veiculo_Modelo.Codigo
    INNER JOIN Veiculo_Marca On
    Veiculo.Marca = Veiculo_Marca.Codigo
    INNER JOIN Veiculo_Cor On
    Veiculo.Cor = Veiculo_Cor.Codigo
    INNER JOIN Veiculo_Combustivel On
    Veiculo.Combustivel = Veiculo_Combustivel.Codigo

    Open Cur_Buscacorte

    FETCH next from Cur_Buscacorte

    while @@FETCH_STATUS = 0


    BEGIN
    if veiculo.Situacao = 2 and veiculo.DataCompra < @v_datacorte
    select top 1 Veiculo_Movtos.Situacao, valorvenda from Veiculo_Movtos, veiculo where
    Veiculo_Movtos.Placa = veiculo.Placa and Veiculo_Movtos.data < @v_datacorte




    END
    segunda-feira, 29 de maio de 2006 15:26

Todas as Respostas

  • Ronaldo,

    Segue um modelo que tirei do BOL:

    DECLARE product_cursor CURSOR FOR
    SELECT v.Name
    FROM Purchasing.ProductVendor pv, Production.Product v
    WHERE pv.ProductID = v.ProductID AND
    pv.VendorID = @vendor_id-- Variable value from the outer cursor

    OPEN product_cursor
    FETCH NEXT FROM product_cursor INTO @product

    IF @@FETCH_STATUS <> 0

    WHILE @@FETCH_STATUS = 0
    BEGIN

    SELECT @message = '         ' + @product
    PRINT @message
    FETCH NEXT FROM product_cursor INTO @product

    END

    CLOSE product_cursor
    DEALLOCATE product_cursor

    -- Get the next vendor.
    FETCH NEXT FROM vendor_cursor
    INTO @vendor_id, @vendor_name
    END
    CLOSE vendor_cursor
    DEALLOCATE vendor_cursor

     

     

    Valeu.

     

     

    segunda-feira, 29 de maio de 2006 15:34
  • faltou dar um fetch dentro do begin q vc fez...
    quarta-feira, 28 de junho de 2006 13:52