2016-11-03 1 views
0

unerwartet war habe ich eine Charge mit diesem Code:if-Anweisung Charge zu diesem Zeitpunkt

set /p carga= ¿Carga inicial o carga diaria? 

if "%carga%"=="c" (

    sqlcmd -Q "exec dbo.SP_OFB_INF_PSN @VALOR = 1, @FECHA=''" -S (local) -d bd_ofb -o OFB_INF_PSN_2.txt 

) 

, aber ich habe diesen Fehler

-d zu diesem Zeitpunkt unerwartet war

Wenn ich die Außenseite der IF verlassen, gibt es keinen Fehlercode

sqlcmd -Q "exec dbo.SP_OFB_INF_PSN @VALOR = 1, @FECHA=''" -S (local) -d bd_ofb -o OFB_INF_PSN_2.txt 
+0

Versuchen Sie, die -d vor dem -Q bewegen. – FDavidov

+4

Das ')' von '(local') wird fälschlicherweise als' '' '' '' in die Schleife übernommen. Du musst ihm entkommen: '... -S (local ^) -d ...' – Stephan

+1

Es gibt wirklich keinen Grund, die Klammern zu haben. Entfernen Sie sie einfach und fügen Sie den Befehl "IF" und den Befehl sql in einer Zeile ein. – Squashman

Antwort

0

Sie können die Schließbügel (mit ^)) entkommen, wie Stephan oder vorgeschlagen können Sie verzögerte Expansion verwenden und Ihre Anweisung in Variable:

setlocal enableDelayedExpansion 

set /p carga= ¿Carga inicial o carga diaria? 

set "statement=sqlcmd -Q "exec dbo.SP_OFB_INF_PSN @VALOR = 1, @FECHA=''" -S (local) -d bd_ofb -o OFB_INF_PSN_2.txt" 

if "%carga%"=="c" (
    !statement! 
) 
Verwandte Themen