Si j'utilise sqlcmd
dans un script de traitement par lots, puis-je référencer une variable de traitement par lots dans la requête?SQLCMD utilisant une variable de traitement par lots dans la requête
Alors que si je fais quelque chose comme
for /f "delims= " %%a in ('sqlcmd -S SERVER -d DATABASE -Q
"SELECT Column1 FROM Table1 WHERE Column1=[specific number]"') do set var1=%%a
comment pourrais-je faire quelque chose comme ça ?:
for /f "delims= " %%b in ('sqlcmd -S SERVER -d DATABASE -Q
"SELECT Column2 FROM Table1 WHERE Column2=[var1]"' do set var2=%%b
Alors que la condition WHERE
dans la deuxième déclaration sqlcmd
utilise l'ensemble variable la première déclaration?
Okay donc je peux encore utiliser la même syntaxe sans discernement? – David
Le% var1% sera remplacé par la valeur réelle lors de l'exécution du batch. –
Ce lot a quelques problèmes que vous devez savoir. 1). Select peut renvoyer plusieurs enregistrements. La dernière valeur sera affectée à la variable. SELECT TOP 1 peut vous aider. 2). Utilisez SET NOCOUNT ON; avant l'instruction, othervise line "(1 rows affected)" sera la dernière ligne. 3). Si SELECT affecte 0 enregistrements alors la dernière ligne sera "-----------" et sera assignée à la variable. –