none
Trabalhar um parametro uniqueidentifier RRS feed

  • Pergunta

  • Amigos,

     

    possuo uma aplicação onde passo o seguinte uniqueidentifier como parametro:'00000000-0000-0000-0000-000000000001'

     

    Contudo gostaria de fazer uma procedure onde estivesse a seguinte condição:

     

    IF @CodLoja = '00000000-0000-0000-0000-000000000001'
        Select @CodLoja = ('2602C1E1-9843-487F-A81B-1F8967996D96', 'A840E801-8E42-4C95-A4C7-3FF333A123BE')

     

    Ou seja, eu gostaria de atribuir todos os outros uniqueidentifier na minha condição, mas não está dando certo aparece o seguinte erro:

     

    Server: Msg 170, Level 15, State 1, Line 30
    Line 30: Incorrect syntax near ','.

     

    Alquem poderia me ajudar?

    quinta-feira, 27 de dezembro de 2007 15:00

Respostas

  • Daniel,

     Vamos lá.

     Todos nós sabemos que uma consula só é realizada, na maioria dos casos, quando as condições impostas para essa
    consulta se aplicam. Não adianta eu procurar laranjas num pé de manga. MAs com certeza eu encontrarei limões num pé de Limão.
     Pois bem, sendo assim uma condição para um busca é tão importante como o que quero buscar.
     Sendo assim voltanso ao exemplo abstrato, eu sou dono de um pomar, esse pomar tem vários tipos de frutas.
     Todos os dias eu tenho que ir para buscar as frutas. Só que eu tenho uma regra para buscar as frutas. Na segunda eu
    só posso pegar as maças, as terças as laranjas, as quartas os pêssegosm as quintas, os limões, as sextas os morangos aos sábados
    as amores e domingo eu ´PRECISO pegar todas as futas. Eu malandramente, construí uma máquina para buscar as frutas pra mim, só que
    para ela saber quais as frutas para buscar eu preciso carregar a máquina com a fruta certa para o dia certo. Sendo assim o que ficaria
    mais fácil?? Eu criar 7 rotinas para cada dia da semana ou uma única rotina que possa ser usada nos 7 dias da semana?? INCLUSIVE
    NO DIA QUE TEM QUE TRAZER TODAS AS FRUTAS!!!!
     Sendo assim eu resolvi fazer uma única rotina.
     vou lá entro com o seguinte dado na segunda

     SELECIONE TODAS AS FRUTAS
     QUE O NOME SEJA  (AQUI EU VOU COLOCAR A FRUTA)

     BLZ..... JÁ RESOLVI MEU PROBLEMA!!!!!!!!!!!! UPA!!!!!!!!
     OP'S É DOMINGO?? COMO VOU COLOCAR TODAS AS FRUTAS NESSA IGUALDADE SABENDO QUE SÓ PODE SER IGUAL A UMA FRUTA??
     Posso colocar uma porção de ou... Ou essa ou aquela ou aquela outra. PO mas se eu quiser cultivar mais frutas vou ter que ficar
     mechendo sempre nessa rotina?? e vai ficar feio e grande!!! Po fala sério.. então o que fazer??

     Malandramente, estou dando ênfase ao malandramente pq sou eu quem está explicando né?!?! Me dar uma moral!! srrsrsrs,
     eu pensei o seguinte. Quer saber.. Quando eu não passar nennhuma fruta eu vou querer que ele pegue todas.
     sendo assim só preciso igualar a fruta que está cadastrada a fruta que eu quero.
     Sendo assim eu cheguei ao seguinte algorítmo.


     ISNULL(fruta CADASTRADA, 0) = ISNULL(FRUTA QUE QUERO, ISNULL(fruta CADASTRADA, 0))

     SENDO ASSIM COMO MINHA FRUTA ESTÁ VAZIA ESSA FRUTA VAI SE TRANSAFORMAR NA FRUTA QUE ESTOU SELECINANDO NO MOMENTO.
     OU SEJA..

     PRIMEIRO ELA SE TRASNFORMA NO SEGUINTE:

     MAÇÃ = MAÇÃ (RETORNA)
     LARANJA = LARANJA (RETORNA)
     UVA = UVA (RETORNA)
     .
     .
     .

     MARAVILHA PROBLEMA RESOLVIDO.... QUANDO EU PRECISAR DE UMA FRUTA TAL EU ENTRO COM ELA.. SENDO ASSIM FICARÁ DESSA FORMA

     MAÇÃ = MAÇÃ (RETORNA)
     LARANJA <> MAÇÃ (NÃO RETORNA)
     UVA <> MAÇÃ (NÃO RETORNA)
     .
     .
     .

     PROBLEMA RESOLVIDO SEM GASTAR CÓDIGO E MEU TEMPO. FUTURAMENTE SE EU QUISER OUTRA FRUTA SÓ CADASTRA-LA NO SISTEMA E RIR A TOA..
     JÁ POSSO IR A PRAIA E TOMAR MINHA CERVEJA

     DANIEL,

      BRINCADEIRAS A PARTE, não se ofenda com a analogia. Só achei que dessa forma seria melhor par entendimento.
      Qualquer parada não se acanhe e volte a perguntar..

     Abraçoi,

      chapolin.rio@gmail.com

    quinta-feira, 27 de dezembro de 2007 18:28

Todas as Respostas

  • Boa Tarde,

     

    Provavelmente você terá que trabalhar com eles utilizando alguma tabela. Você não conseguirá passar múltiplos valores para uma única variável (a menos que estivesse utilizando uma construção XML).

     

    DECLARE @codLoja INT

    SET @codLoja = 4340

    IF @codLoja IN (SELECT codLoja FROM Tabela)

    BEGIN

    PRINT 'Passou aqui'

    END

     

    Será que isso já ajudaria ?

     

    [ ]s,

     

    Gustavo

    quinta-feira, 27 de dezembro de 2007 15:13
  • Gustavo,

     

    o que estou precisando fazer é pegar um parametro da minha aplicação, ou seja, se este parametro for igual a "TODOS" então irei buscar todos os registros. Sendo que este parametro que eu passo é um uniqueidentifier.

     

    Como faço para implementar a minha StoreProcedure caso o parametro seja igual a "TODOS"?

    quinta-feira, 27 de dezembro de 2007 15:39
  • Boa tarde dralvez,

     

    Deixa eu ver se entendi. Caso vc escolha um parãmetro como o todos deve ser listado todos os registros que estão no banco. Porém se vc escolher um parâmetro tal só pode vir esse parâmetro correto? se for isso vc pode postar a parte da procedure que é responsável por esse filtro?!? Assim acredito que possa te ajudar com mais facilidade.

     

    Abraço,

     

    chapolin.rio@gmail.com

    quinta-feira, 27 de dezembro de 2007 16:26
  • É isso mesmo, mas o mesmo parametro que informo que são todas lojas é também onde especifico uma unica loja.

     

    Segue a procedure

     

    --Create Procedure SP_Relatorio_ChequePresente_Por_Periodo

    declare
    @CodLoja  uniqueidentifier,
    @DtEnvioInicio smalldatetime,
    @DtEnvioFim smalldatetime,
    @StatusImpresso char(1),
    @StatusDistribuido char(1),
    @StatusUsado char(1),
    @Valor money

    --AS

    select @CodLoja = '00000000-0000-0000-0000-000000000001'
    select @DtEnvioInicio = '20071211'
    select @DtEnvioFim = '20071211'
    select @StatusImpresso = 1
    select @StatusDistribuido = 1
    select @StatusUsado = 0
    select @Valor = 0

    -- Pega o valor do codigo e se for '00000000-0000-0000-0000-000000000000' coloca codloja igual a null
     
     IF @CodLoja = '00000000-0000-0000-0000-000000000000'
        Select @CodLoja = Null

    -- Pega o valor do codigo e se for '00000000-0000-0000-0000-000000000001' lista todos os códigos das lojas
     
     IF @CodLoja = '00000000-0000-0000-0000-000000000001'
        Select @CodLoja = (Select CodLoja from Loja)

    -- Pega o valor do Valor e se for null coloca 0

     IF @Valor is null
        Select @Valor = 0


    Select L.NomLoja, count(ChPr.NumBarras) as Qtde
     from ChequePresente ChPr
      inner join Loja L
       on ChPr.CodLoja = L.CodLoja
     where ChPr.CodLoja = @CodLoja
     and dtenvio between @DtEnvioInicio and @DtEnvioFim
     and ChPr.StatusImpresso = @StatusImpresso
     and ChPr.StatusDistribuido = @StatusDistribuido
     and ChPr.StatusUsado = @StatusUsado
     and ChPr.Valor = @Valor
    group by L.NomLoja

    quinta-feira, 27 de dezembro de 2007 16:43
  • Chapolin esqueci de passar o erro

     

    Server: Msg 512, Level 16, State 1, Line 30
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

     

    quinta-feira, 27 de dezembro de 2007 16:45
  • drarlvez,

     

    tenta dessa forma. O que eu comentei é pq não será mais usado. O parâmetro da procedure que corresponde a loja será opcional. Se for um todos basta passar o parâmetro como um NULL ou nem mesmo passar. Se for por uma loja só passar o parâmetro. A procedure vai tratar isso no where. Se for nulo vai igualar todos os campos e trará todos os resultado do banco.

     

    Espero ter ajudado,

     

    Abraço,

     

    chapolin.rio@gmail.com

     

     

    Create Procedure SP_Relatorio_ChequePresente_Por_Periodo

    @CodLoja uniqueidentifier = NULL,

    @DtEnvioInicio smalldatetime,

    @DtEnvioFim smalldatetime,

    @StatusImpresso char(1),

    @StatusDistribuido char(1),

    @StatusUsado char(1),

    @Valor money

    --AS

    --select @CodLoja = '00000000-0000-0000-0000-000000000001'

    select @DtEnvioInicio = '20071211'

    select @DtEnvioFim = '20071211'

    select @StatusImpresso = 1

    select @StatusDistribuido = 1

    select @StatusUsado = 0

    select @Valor = 0

    -- Pega o valor do codigo e se for '00000000-0000-0000-0000-000000000000' coloca codloja igual a null

    -- IF @CodLoja = '00000000-0000-0000-0000-000000000000'

    -- Select @CodLoja = Null

    -- Pega o valor do codigo e se for '00000000-0000-0000-0000-000000000001' lista todos os códigos das lojas

    -- IF @CodLoja = '00000000-0000-0000-0000-000000000001'

    -- Select @CodLoja = (Select CodLoja from Loja)

    -- Pega o valor do Valor e se for null coloca 0

    IF @Valor is null

    Select @Valor = 0

     

    Select L.NomLoja, count(ChPr.NumBarras) as Qtde

    from ChequePresente ChPr

    inner join Loja L

    on ChPr.CodLoja = L.CodLoja

    where ISNULL(ChPr.CodLoja, 0) = ISNULL(@CodLoja, ISNULL(ChPr.CodLoja, 0))

    and dtenvio between @DtEnvioInicio and @DtEnvioFim

    and ChPr.StatusImpresso = @StatusImpresso

    and ChPr.StatusDistribuido = @StatusDistribuido

    and ChPr.StatusUsado = @StatusUsado

    and ChPr.Valor = @Valor

    group by L.NomLoja

    quinta-feira, 27 de dezembro de 2007 16:49
  • Chapolin,

     

    segue os erro que estão medando. Mas pelo que entendi não vou procurar fazer desta forma, pois eu marco a variavel @CodLoja como null para tratar outros casos.

     

    Server: Msg 139, Level 15, State 1, Line 2
    Cannot assign a default value to a local variable.
    Server: Msg 137, Level 15, State 1, Line 22
    Must declare the variable '@DtEnvioInicio'.
    Server: Msg 137, Level 15, State 1, Line 24
    Must declare the variable '@DtEnvioFim'.
    Server: Msg 137, Level 15, State 1, Line 26
    Must declare the variable '@StatusImpresso'.
    Server: Msg 137, Level 15, State 1, Line 28
    Must declare the variable '@StatusDistribuido'.
    Server: Msg 137, Level 15, State 1, Line 30
    Must declare the variable '@StatusUsado'.
    Server: Msg 137, Level 15, State 1, Line 48
    Must declare the variable '@Valor'.
    Server: Msg 137, Level 15, State 1, Line 48
    Must declare the variable '@Valor'.
    Server: Msg 137, Level 15, State 1, Line 54
    Must declare the variable '@Valor'.
    Server: Msg 137, Level 15, State 1, Line 62
    Must declare the variable '@CodLoja'.

    quinta-feira, 27 de dezembro de 2007 17:01
  • Esses erros estão dando por que modifiquei a sua proc. Vc me mandou com um script e eu a voltei como um proc. Só recolocar o declare na primeira variável e comentar o create proc. Na hora que fizer isso vc terá que tirar o = NULL no código da loja..

     

    Agora esse lance da loja NULa para outros casos não entendi muito bem...

    quinta-feira, 27 de dezembro de 2007 17:04
  • Eu fiz exatamente isso e o erro é este

     

    Server: Msg 206, Level 16, State 2, Line 39
    Operand type clash: int is incompatible with uniqueidentifier
    Server: Msg 206, Level 16, State 1, Line 39
    Operand type clash: int is incompatible with uniqueidentifier

     

    Com relação ao null eu tenho que trabalhar o mesmo porque quando estiver null eu buscarei todos aqueles registros que não estão em loja alguma.

    quinta-feira, 27 de dezembro de 2007 17:19
  • Chapolin,

     

    Não entendi muito bem está condição poderia me ajudar.

     

    where ISNULL(ChPr.CodLoja, 0) = ISNULL(@CodLoja, ISNULL(ChPr.CodLoja, 0))
    quinta-feira, 27 de dezembro de 2007 17:27
  • Essa condição aí quer dizer o seguinte.

     

    Se o campo ChPr.CodLoja for nulo ele ser tornará um 0

    Se a variável @CodLoja for nula ela se tornará um 0 .

    Sendo assim 0 = 0. Where retorna todo mundo.

     

    Se o campo ChPr.CodLoja <> nulo o campo continuára com seu valor

    Se a variável @CodLoja <> nula ela se tornará o mesmo valor que o campo ChPr.CodLoja. Sendo assim vai retornar todo mundo pois os campos serão iguais.

     

    Se o campo ChPr.CodLoja <> nulo o campo continuára com seu valor

    Se a variável @CodLoja <> nula ela continuára com seu valor

    Sendo assim só retornará os campos que forem ChPr.CodLoja = @CodLoja .

     

    Consegui explicar direito?!?

     

    Qualquer parada posta que tento explicar de outra forma.

     

    Abraço,

     

    chapolin.rio@gmail.com

    quinta-feira, 27 de dezembro de 2007 17:33
  • melhorou um pouco, mais ainda continua com uma nuvem negra.

     

    mas o erro está dando justamente por causa do zero.

     

    Como faço para em quadrar no meu exemplo?

    quinta-feira, 27 de dezembro de 2007 17:42
  • Essa condição ISNULL(ChPr.CodLoja, '2602C1E1-9843-487F-A81B-1F8967996D96') = ISNULL

    seria igual a isso:

     

    Se nulo o (campo ChPr.CodLoja, transforma em 0) = ?

     

    quinta-feira, 27 de dezembro de 2007 17:45
  • Cara,

     

    Tenta no lugar do zero colocar um espaco vazio ''. Se isso não der certo deveremos pensar em fazer isso e após convertes o campo e a variável. tenta aí e depois me diz..

     

     

    quinta-feira, 27 de dezembro de 2007 17:45
  •  

    Nesse seu caso todo campo ChPr.CodLoja que for nulo receberá como valor o '2602C1E1-9843-487F-A81B-1F8967996D96'.

     

    A síntaxe é justamente essa: ISNULL(ChPr.CodLoja, '2602C1E1-9843-487F-A81B-1F8967996D96')

     

    O  = ISNULL  não existe

    quinta-feira, 27 de dezembro de 2007 17:51
  • Funcionou mas a nuvem ainda paira sobre minha cabeça com relação aquela condição poderia me explicar de novo?

    E quanto aos registros que eu possuo como null na tabela eu também gostaria de trabalha-los. Tem alguma ideia?

     

    quinta-feira, 27 de dezembro de 2007 17:55
  • Bem Daniel,

     

    A respeito da galera nula vc pode pensar de uma seguinte forma. Quando a variável da loja for para trazer nula vc transforma ela num valor  e o campo tambem. Usar o camp do where para isso. O que vc pode fazer como sua proc é pequena fazer um IF. Quero buscar todas as lojas Nulas ae vc vai pra condição das lojas nulas com o where dessa forma por exemplo.

     

    QUERO BUSCAR LOJAS NULAS

    RECEBI A VARIÁVEL DESSA FORMA

    @CodLoja = 'XXX'

     

    IF @CodLoja = 'XXX'

     

    Select L.NomLoja, count(ChPr.NumBarras) as Qtde

    from ChequePresente ChPr

    inner join Loja L

    on ChPr.CodLoja = L.CodLoja

    whereChPr.CodLoja ISNULL

    and dtenvio between @DtEnvioInicio and @DtEnvioFim

    and ChPr.StatusImpresso = @StatusImpresso

    and ChPr.StatusDistribuido = @StatusDistribuido

    and ChPr.StatusUsado = @StatusUsado

    and ChPr.Valor = @Valor

    group by L.NomLoja

     

    ELSE

     

    Select L.NomLoja, count(ChPr.NumBarras) as Qtde

    from ChequePresente ChPr

    inner join Loja L

    on ChPr.CodLoja = L.CodLoja

    where ISNULL(ChPr.CodLoja, 0) = ISNULL(@CodLoja, ISNULL(ChPr.CodLoja, 0))

    and dtenvio between @DtEnvioInicio and @DtEnvioFim

    and ChPr.StatusImpresso = @StatusImpresso

    and ChPr.StatusDistribuido = @StatusDistribuido

    and ChPr.StatusUsado = @StatusUsado

    and ChPr.Valor = @Valor

    group by L.NomLoja

     

    Vai ficar um poquinho grande mas resolve seu problema sem mais um condição e risco de queda de performance...

     

    Isso aí eu pensei rápido aqui.. Se pintar outra idéia eu te digo... Quando a explicação peraí que vou postar aqui uma no capricho..

    rsrsrsrsrs

    quinta-feira, 27 de dezembro de 2007 18:08
  • Daniel,

     Vamos lá.

     Todos nós sabemos que uma consula só é realizada, na maioria dos casos, quando as condições impostas para essa
    consulta se aplicam. Não adianta eu procurar laranjas num pé de manga. MAs com certeza eu encontrarei limões num pé de Limão.
     Pois bem, sendo assim uma condição para um busca é tão importante como o que quero buscar.
     Sendo assim voltanso ao exemplo abstrato, eu sou dono de um pomar, esse pomar tem vários tipos de frutas.
     Todos os dias eu tenho que ir para buscar as frutas. Só que eu tenho uma regra para buscar as frutas. Na segunda eu
    só posso pegar as maças, as terças as laranjas, as quartas os pêssegosm as quintas, os limões, as sextas os morangos aos sábados
    as amores e domingo eu ´PRECISO pegar todas as futas. Eu malandramente, construí uma máquina para buscar as frutas pra mim, só que
    para ela saber quais as frutas para buscar eu preciso carregar a máquina com a fruta certa para o dia certo. Sendo assim o que ficaria
    mais fácil?? Eu criar 7 rotinas para cada dia da semana ou uma única rotina que possa ser usada nos 7 dias da semana?? INCLUSIVE
    NO DIA QUE TEM QUE TRAZER TODAS AS FRUTAS!!!!
     Sendo assim eu resolvi fazer uma única rotina.
     vou lá entro com o seguinte dado na segunda

     SELECIONE TODAS AS FRUTAS
     QUE O NOME SEJA  (AQUI EU VOU COLOCAR A FRUTA)

     BLZ..... JÁ RESOLVI MEU PROBLEMA!!!!!!!!!!!! UPA!!!!!!!!
     OP'S É DOMINGO?? COMO VOU COLOCAR TODAS AS FRUTAS NESSA IGUALDADE SABENDO QUE SÓ PODE SER IGUAL A UMA FRUTA??
     Posso colocar uma porção de ou... Ou essa ou aquela ou aquela outra. PO mas se eu quiser cultivar mais frutas vou ter que ficar
     mechendo sempre nessa rotina?? e vai ficar feio e grande!!! Po fala sério.. então o que fazer??

     Malandramente, estou dando ênfase ao malandramente pq sou eu quem está explicando né?!?! Me dar uma moral!! srrsrsrs,
     eu pensei o seguinte. Quer saber.. Quando eu não passar nennhuma fruta eu vou querer que ele pegue todas.
     sendo assim só preciso igualar a fruta que está cadastrada a fruta que eu quero.
     Sendo assim eu cheguei ao seguinte algorítmo.


     ISNULL(fruta CADASTRADA, 0) = ISNULL(FRUTA QUE QUERO, ISNULL(fruta CADASTRADA, 0))

     SENDO ASSIM COMO MINHA FRUTA ESTÁ VAZIA ESSA FRUTA VAI SE TRANSAFORMAR NA FRUTA QUE ESTOU SELECINANDO NO MOMENTO.
     OU SEJA..

     PRIMEIRO ELA SE TRASNFORMA NO SEGUINTE:

     MAÇÃ = MAÇÃ (RETORNA)
     LARANJA = LARANJA (RETORNA)
     UVA = UVA (RETORNA)
     .
     .
     .

     MARAVILHA PROBLEMA RESOLVIDO.... QUANDO EU PRECISAR DE UMA FRUTA TAL EU ENTRO COM ELA.. SENDO ASSIM FICARÁ DESSA FORMA

     MAÇÃ = MAÇÃ (RETORNA)
     LARANJA <> MAÇÃ (NÃO RETORNA)
     UVA <> MAÇÃ (NÃO RETORNA)
     .
     .
     .

     PROBLEMA RESOLVIDO SEM GASTAR CÓDIGO E MEU TEMPO. FUTURAMENTE SE EU QUISER OUTRA FRUTA SÓ CADASTRA-LA NO SISTEMA E RIR A TOA..
     JÁ POSSO IR A PRAIA E TOMAR MINHA CERVEJA

     DANIEL,

      BRINCADEIRAS A PARTE, não se ofenda com a analogia. Só achei que dessa forma seria melhor par entendimento.
      Qualquer parada não se acanhe e volte a perguntar..

     Abraçoi,

      chapolin.rio@gmail.com

    quinta-feira, 27 de dezembro de 2007 18:28
  • Meu Chapa,

     

    nessa vc bateu o record, valeu pela ajuda.

    quinta-feira, 27 de dezembro de 2007 18:38
  •  

    Daniel,

     

    Obrigado pelo retorono. Sempre que precisar todos do fórum estarão aqui para ajuda-lo.

     

    Abraço,

     

    chapolin.rio@gmail.com

    quinta-feira, 27 de dezembro de 2007 18:46
  •  

    Chapolin,

     

    Como diriam aqui na minha terra: Nessa você se puxou!!

     

    Muito bom mesmo. Parabéns.

     

     

    Abraço

    quinta-feira, 27 de dezembro de 2007 19:00
  • Opa....

     

    Valeu pelo elogio Alexandre, vindo de vc é um belo levante no ego!!!! Só não entendi essa do  "Nessa você se puxou!!"

    rsrsrsrsrsrsrs

     

    Abraço,

     

    chapolin.rio@gmail.com

    quinta-feira, 27 de dezembro de 2007 19:08
  •  

    Aqui no sul tem expressões que só nós entendemos... hehehe

     

    Mas, seria tipo: "Caprichou hein??"

     

     

    Abração

    quinta-feira, 27 de dezembro de 2007 19:32
  •  dralves wrote:

    É isso mesmo, mas o mesmo parametro que informo que são todas lojas é também onde especifico uma unica loja.

     

    Segue a procedure

     

    --Create Procedure SP_Relatorio_ChequePresente_Por_Periodo

    declare
    @CodLoja  uniqueidentifier,
    @DtEnvioInicio smalldatetime,
    @DtEnvioFim smalldatetime,
    @StatusImpresso char(1),
    @StatusDistribuido char(1),
    @StatusUsado char(1),
    @Valor money

    --AS

    select @CodLoja = '00000000-0000-0000-0000-000000000001'
    select @DtEnvioInicio = '20071211'
    select @DtEnvioFim = '20071211'
    select @StatusImpresso = 1
    select @StatusDistribuido = 1
    select @StatusUsado = 0
    select @Valor = 0

    -- Pega o valor do codigo e se for '00000000-0000-0000-0000-000000000000' coloca codloja igual a null
     
     IF @CodLoja = '00000000-0000-0000-0000-000000000000'
        Select @CodLoja = Null

    -- Pega o valor do codigo e se for '00000000-0000-0000-0000-000000000001' lista todos os códigos das lojas
     

    Code Block

    O problema na sua procedure está aqui, quando você fala pra buscar o código da loja na tabela Loja a query está retornando mais de um valor.

     

     IF @CodLoja = '00000000-0000-0000-0000-000000000001'
        Select @CodLoja = (Select CodLoja from Loja)

     

     

    -- Pega o valor do Valor e se for null coloca 0

     IF @Valor is null
        Select @Valor = 0


    Select L.NomLoja, count(ChPr.NumBarras) as Qtde
     from ChequePresente ChPr
      inner join Loja L
       on ChPr.CodLoja = L.CodLoja
     where ChPr.CodLoja = @CodLoja
     and dtenvio between @DtEnvioInicio and @DtEnvioFim
     and ChPr.StatusImpresso = @StatusImpresso
     and ChPr.StatusDistribuido = @StatusDistribuido
     and ChPr.StatusUsado = @StatusUsado
     and ChPr.Valor = @Valor
    group by L.NomLoja

    quinta-feira, 27 de dezembro de 2007 19:36