2016-12-18 4 views
0

私は私が下にほしいと思うものの大部分を持っています、私はちょうど方法を知る必要があります;クエリの結果を変数に取得するには(sqlcmdからbatch/cmdへ)

  1. 私が起こるに必要なものを収集変数

の結果に基づいて、次のアクションが中に入れてください、SQL結果から

  • を変数を収集します。

    updatedDateが3日前の場合は、GOTO BREXIT(時間無視)です。私は他のアプリケーションでこれを使用したいので、* .sqlの外でこれを処理することを好むでしょう。

    • updatedDate = 2016年5月12日夜02時30分
    • 3日前

      EG1

      = 2016年2月12日午後12時
    • RESULT = GOTOが

    を抽出eg2

    • updatedDate = 6/12/2016 02:30
    • 3日前= 2016年2月12日〇時00分
    • RESULT = GOTO BREXIT

    (コメントは、まだ符号化されていない)は、以下のようにコードが現在ある:簡単にするため

    echo Check last update 
    sqlcmd -S MYSERVER\JD2016 -d OMNITRIX -Q "SET NOCOUNT ON SELECT MAX(updateDateTime) 'updatedDate' FROM dbo.Names;" -h-1 -b 
    
    ::(if statement would go here) 
    
    :EXTRACT 
    echo Running Omnitrix Extract 
    sqlcmd -S MYSERVER\JD2016 -d OMNITRIX -i "C:\update.sql" -W -s; -h-1 > "C:\result.csv" -b 
    
    echo Omnitrix has been extracted 
    
    GOTO END 
    
    ::(:BREXIT) 
    ::(echo Please Update the Omnitrix) 
    
    :END 
    pause 
    
  • +1

    バッチファイルでIF ELSEについては、このリンクを参照してくださいます。http ://stackoverflow.com/questions/11081735/how-to-use-if-else-structure-in-a-batch-file – tlemaster

    +0

    あなたのお返事ありがとうございます!私はフローを処理する方法を知っています - 私の質問は多かれ少なかれ、クエリーの結果(つまり2005年5月12日15時13分)をxに取り込み、日付(2005年12月5日)のみを読み取り、その日の現在の日付 - 3 – JayDesu

    +0

    あなたが解決策を持っていれば、答えとしてここに投稿し、それを受け入れることもできます... – aschipfl

    答えて

    0

    私は、最初のSQLで直接最大有効期限を確認することをお勧めします。すなわち:

    select case 
        when datediff(getdate(), max(yourdate)) > 3 then 'needupdate' 
        else 'ok' end 
    from ... 
    

    とは、Windows batch assign output of a program to a variable

    は十分だろうリンクとコメントされるかもしれに見えますが、提案が長すぎる...)

    関連する問題