Ir para conteúdo

Arquivado

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

soareslucas94

Resultados aparecendo como NULL

Recommended Posts

Galera, boa noite. Alguém pode me ajudar ? Tentei um monte de alternativas e os resultados insistem em aparecer NULL. Tenho até 23:59h de hoje pra entregar, se alguém souber.. Abaixo vou postar um print de como fica o resultado da consulta.

 

use AdventureWorksLT2008
go
Create function av2ex1()
returns @tabela table(valordesconto varchar(10),
desconto varchar(20),
novosubtotal money,
imposto money,
frete money,
total money,
ID int)

begin

declare cursordesconto cursor local scroll for

select SalesLT.SalesOrderHeader.Subtotal,
SalesLT.SalesOrderHeader.TaxAmt,
SalesLT.SalesOrderHeader.freight,
SalesLT.SalesOrderHeader.TotalDue,
SalesLT.SalesOrderHeader.SalesOrderID,
SalesLT.SalesOrderHeader.CustomerID,
SalesLT.Address.CountryRegion
from SalesLT.SalesOrderHeader inner join SalesLT.CustomerAddress
on SalesLT.SalesOrderHeader.CustomerID = SalesLT.CustomerAddress.CustomerID
inner join SalesLT.Address
on SalesLT.CustomerAddress.AddressID = SalesLT.Address.AddressID

declare @novosubtotal as money
declare @totaldue as money
declare @imposto as money
declare @taxamt as money
declare @valordesconto as varchar(10)
declare @desconto as varchar(20)
declare @subtotal as money
declare @freight as money
declare @salesorderid as int
declare @customerid as int
declare @total as money
declare @countryregion as varchar(20)


open cursordesconto
fetch from cursordesconto
into @subtotal,@taxamt,@freight,@totaldue,@salesorderid,@customerid,@countryregion
while @@FETCH_STATUS = 0


begin
if @subtotal < 700 and @countryregion = 'Canadá'
begin
set @novosubtotal = @subtotal - @subtotal * 0.05
set @valordesconto = '5%'
set @imposto = @novosubtotal * 0.08
set @totaldue = @novosubtotal + @imposto + @freight
set @desconto ='Houve desconto !'
end
else
if @subtotal >= 700 and @subtotal <= 1000 and @countryregion = 'Canadá'
begin
set @novosubtotal = @subtotal - @subtotal * 0.1
set @valordesconto = '10%'
set @imposto = @novosubtotal * 0.08
set @total = @novosubtotal + @imposto + @freight
set @desconto ='Houve desconto !'
end
else
if @subtotal > 1000 and @countryregion = 'Canadá'
begin
set @novosubtotal = @subtotal - @subtotal * 0.15
set @valordesconto = '15%'
set @imposto = @novosubtotal * 0.08
set @total = @novosubtotal + @imposto + @freight
set @desconto = 'Houve desconto !'
end
else
if @countryregion = 'Canadá'
begin
set @novosubtotal = @subtotal
set @imposto = @taxamt
set @desconto = 'Não houve desconto !'
set @total = @totaldue
end

insert @tabela
select @valordesconto,
@desconto,
@novosubtotal,
@imposto,
@freight,
@total,
@salesorderid

fetch from cursordesconto
into @subtotal, @taxamt, @freight, @totaldue,@salesorderid,@customerid,@countryregion
end
close cursordesconto
deallocate cursordesconto

return
end
go

select *
from DBO.av2ex1()
go



https://fbcdn-sphotos-g-a.akamaihd.net/hphotos-ak-prn2/1479540_554786334614742_1335363378_n.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

As condições não devem estar sendo atendidas, não "entrando" em nenhum if ficando com valores null.

 

Tente fazer com case tratando o else.

 

O "frete" é o único que parece vir do select.

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.