2 Stimmen

In SQL Server Management Studio \SQLCMD Modus, kann ich Variablen innerhalb einer Reihe von Anweisungen verwenden

Ich versuche, einige meiner Einrichtungsskripte besser lesbar und weniger fehleranfällig zu machen. Die folgende Art von Code habe ich jetzt in meinen SQLCMD-Skripten, die ich über Management Studio ausführe:

!!bcp "select * from Database1..Table1 where CreateDate > '7/11/2010'" queryout C:\junk\Table1.tab -n  -SServerName1 -UTestUser -PTestPassword
!!bcp "select * from Database1..Table2 where CreateDate > '7/11/2010'" queryout C:\junk\Table2.tab -n  -SServerName1 -UTestUser -PTestPassword

Anstatt das Datum in jeder Anweisung hart zu kodieren, würde ich gerne so etwas tun können:

declare @Date1 datetime
select  @Date1 =  '7/11/2010'

!!bcp "select * from Database1..Table1 where CreateDate > @Date1" queryout C:\junk\BCPData\Table1.tab -n  -SServerName1 -UTestUser -PTestPassword
!!bcp "select * from Database1..Table2 where CreateDate > @Date1" queryout C:\junk\BCPData\Table2.tab -n  -SServerName1 -UTestUser -PTestPassword

Beachten Sie, dass im zweiten Satz von Code das Datum nicht mehr fest kodiert ist.

Gibt es eine Möglichkeit, dies zu tun, oder gibt es gute Alternativen?

Danke für jede Idee! Sylvia

1voto

Martin Smith Punkte 417623

Funktioniert das? (Eine Vermutung, basierend auf aquí )

:setvar date "7/11/2010"
!!bcp "select * from Database1..Table1 where CreateDate > '$(date)'" queryout C:\junk\Table1.tab -n  -SServerName1 -UTestUser -PTestPassword
!!bcp "select * from Database1..Table2 where CreateDate > '$(date)'" queryout C:\junk\Table2.tab -n  -SServerName1 -UTestUser -PTestPassword

bearbeiten

Jepp. Folgendes funktioniert bei mir

:setvar date "07/07/2008"
!!bcp "select * from master.sys.objects where Create_Date > '$(date)'" queryout C:\master.tab -n  -S(local) -T

0voto

Will A Punkte 24412

Ich bin sicher, dass Sie kann nicht dies mit DECLAREd-SQL-Variablen tun, aber sehen Sie sich dieser Link für eine Anleitung zur Verwendung von Skriptvariablen innerhalb von SQLCMD - was auch für den SQLCMD-Modus gelten sollte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X