none
aplicação de consulta RRS feed

  • Pergunta

  • pessoal,

    preciso criar uma aplicação para realizar consulta a uma tabela no meu bd.

    eu criei uma SP com o select das informações que para esta consulta.

    ai pensei em criar pelo bat mesmo já que é um arquivo que vou disponibilizar para uma pessoa especifica da empresa

    o que eu consegui ate agora é fazer o login com usuario e senha,

    mais preciso linkar a busca, ja vi os docs da microsoft e e me ajudou um pouco, mais preciso de uma orientação.

    até agora meu script está assim:

    :LOGIN
    set usuario=
    set /p usuario=Digite o Usuario:
    @echo off
    IF "%usuario%"=="" (goto erroLogin)ELSE (goto Senha)
    
    :Senha
    set senha=
    set /p senha=Digite a Senha:
    @echo off
    IF "%senha%"=="" (goto erroLogin) ELSE (goto consulta)
    
    :erroLogin
    echo.
    echo.
    echo Preencha os dados corretamente
    echo.
    pause
    goto LOGIN
    
    :consulta
    set idcliente=
    set /p idcliente=Digite ID do cliente:
    @echo off
    IF "%idcliente%"=="" (goto erroLogin) ELSE (goto executar)
    
    %idcliente% goto executar
    
    :executar
    echo.
    echo.
    echo ----------------------------------------------------------
    sqlcmd -S  DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASES_01  -i P:\CONSULTA.sql
    pause 
    
    

    Eu nao estou conseguindo linkar o IDcliente o script CONSULTA é esse:

    @IDCLIENTE AS FLOAT
    AS
    select DATA_CADASTRO
          ,PRIMEIRO_PAGAMENTO
          ,ULTIMO_PAGAMENTO
          ,CPF
          ,NOME
          ,CONTRATO
    FROM TB_06_JUNHO_D8
    WHERE CPF=@IDCLIENTE


    segunda-feira, 13 de julho de 2020 14:58

Todas as Respostas

  • setvar   https://docs.microsoft.com/pt-br/sql/ssms/scripting/sqlcmd-use-with-scripting-variables

    segunda-feira, 13 de julho de 2020 15:10
  • pessoal,

    preciso criar uma aplicação para realizar consulta a uma tabela no meu bd.

    eu criei uma SP com o select das informações que para esta consulta.

    ai pensei em criar pelo bat mesmo já que é um arquivo que vou disponibilizar para uma pessoa especifica da empresa

    o que eu consegui ate agora é fazer o login com usuario e senha,

    mais preciso linkar a busca, ja vi os docs da microsoft e e me ajudou um pouco, mais preciso de uma orientação.

    até agora meu script está assim:

    :LOGIN
    set usuario=
    set /p usuario=Digite o Usuario:
    @echo off
    IF "%usuario%"=="" (goto erroLogin)ELSE (goto Senha)
    
    :Senha
    set senha=
    set /p senha=Digite a Senha:
    @echo off
    IF "%senha%"=="" (goto erroLogin) ELSE (goto consulta)
    
    :erroLogin
    echo.
    echo.
    echo Preencha os dados corretamente
    echo.
    pause
    goto LOGIN
    
    :consulta
    set idcliente=
    set /p idcliente=Digite ID do cliente:
    @echo off
    IF "%idcliente%"=="" (goto erroLogin) ELSE (goto executar)
    
    %idcliente% goto executar
    
    :executar
    echo.
    echo.
    echo ----------------------------------------------------------
    sqlcmd -S  DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASES_01  -i P:\CONSULTA.sql
    pause 
    

    Eu nao estou conseguindo linkar o IDcliente o script CONSULTA é esse:

    @IDCLIENTE AS FLOAT
    AS
    select DATA_CADASTRO
          ,PRIMEIRO_PAGAMENTO
          ,ULTIMO_PAGAMENTO
          ,CPF
          ,NOME
          ,CONTRATO
    FROM TB_06_JUNHO_D8
    WHERE CPF=@IDCLIENTE


    Djacy,

    Este linha de código: @IDCLIENTE AS FLOAT se refere a declaração de uma variável.

    Mas esse declaração esta sem feita diretamente na sua query ou através do arquivo .bat?

    Se for no botão como já seguirido utilize o comando Setvar, caso seja diretamente na query processada pelo SQL Server, utilize o comando Declare antes do nome da variável.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 13 de julho de 2020 15:50
  • eu vi isso, depois que mandei aqui, eu ajustei o arquivo da consulta e tambem vi o que o AVATAR SQL mandou.

    o comando do sqlcmd ficou

    sqlcmd -v %idcliente% = @idcliente -S DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASE_CLIENTES  -i P:\CONSULTA.sql
    

    E o arquivo consulta assim:

    declare
    @IDCLIENTE AS FLOAT
    go
    select DATA_CADASTRO
          ,PRIMEIRO_PAGAMENTO
          ,ULTIMO_PAGAMENTO
          ,CPF
          ,NOME
          ,CONTRATO
    FROM TB_06_JUNHO_D8
    WHERE CPF=@IDCLIENTE

    segunda-feira, 13 de julho de 2020 16:16
  • Djacy,

    Acredito que o problema seja um pequeno ajusto na sua query, veja se um dos exemplos abaixo poderá lhe ajudar:

    -- Antes --
    sqlcmd -v %idcliente% = @idcliente -S DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASE_CLIENTES  -i P:\CONSULTA.sql
    Go
    
    -- Depois --
    Set @idCliente=%1 -- tenta acrescentar a diretiva Set --
    
    sqlcmd -v %@idcliente%=@idcliente -S DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASE_CLIENTES  -i P:\CONSULTA.sql
    Go
    
    --------------------------- Ou assim --------------------
    -- Antes --
    sqlcmd -v %idcliente% = @idcliente -S DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASE_CLIENTES  -i P:\CONSULTA.sql
    
    -- Depois --
    :Setvar @idCliente 1
    
    sqlcmd -v %@idcliente%=@idcliente -S DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASE_CLIENTES  -i P:\CONSULTA.sql
    Go
    



    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 13 de julho de 2020 16:40
  • continua aparecendo o mesmo erro de argumento invalido.
    segunda-feira, 13 de julho de 2020 20:46
  • Djacy,

    Veja se estas alterações podem lhe ajudar:

    sqlcmd -SDSK-AKRK-9822\SQLEXPRESS -U%usuario% -P%senha% -dBASE_CLIENTES -v Variavel=%@idcliente% -i P:\CONSULTA.sql
    Go


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    segunda-feira, 13 de julho de 2020 22:15
  • eu consegui invertendo:

    sqlcmd -v @idcliente=%idcliente% -S DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASE_CLIENTES -i P:\CONSULTA.sql 

    mas, o resultado ainda nao esta bom, eu vou precisar ver como faz p alinhar...

    porque o resultado ta todo bagunçado


    • Editado Djacy terça-feira, 14 de julho de 2020 19:49 anexo imagem
    terça-feira, 14 de julho de 2020 19:47
  • eu consegui invertendo:

    sqlcmd -v @idcliente=%idcliente% -S DSK-AKRK-9822\SQLEXPRESS -U %usuario% -P %senha% -d BASE_CLIENTES -i P:\CONSULTA.sql 

    mas, o resultado ainda nao esta bom, eu vou precisar ver como faz p alinhar...

    porque o resultado ta todo bagunçado


    Djacy,

    Isso, primeiro você declara na linha a variável e depois o elemento que representa a passagem de valores.

    Mas vamos com calma, o resultado apresentado pelo SQLCMD é desta forma mesmo, este é o padrão de retorno em tela.

    Você tem que verificar a query que esta sendo utilizado como parâmetro de entrada dos dados.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 14 de julho de 2020 23:36