2017-10-07 5 views
2

Ich rufe eine gespeicherte Prozedur, um zu bestimmen, wo ich eine Zahl in einen Datetime zu werfen bin versucht (wie ich es aus Excel Grabbing bin so es Daten Zahlen konvertiert:Mit wählen Sie eine gespeicherte Prozedur Parameter

exec UpdateInvoices @InvoiceDate = select cast(cast(42109 as datetime) as date) 

Dies, erhalte ich falsche Syntax in der Nähe von Select nicht funktioniert.

Was dies zu tun, den richtigen Weg ist?

+0

einen bestimmten Grund Sie nicht wollen, '@ InvoiceDate' separat zu setzen und es dann als normal SP passieren? –

Antwort

1

zuerst müssen Sie Ihre Parameter einzustellen.

DECLARE @DateParam date 

SELECT @DateParam = cast(cast(42109 as datetime) as date) 
EXEC UpdateInvoices @InvoiceDate = @DateParam 
+0

Der Versuch, es in einer Zeile zu tun, da ich eine Autofill in Excel habe, die es füllt – Evonet

+1

@Evonet Nicht sicher, ob es in einer Zeile erfolgen kann. Eine andere Alternative besteht darin, das gespeicherte Proc zu ändern, um 'varchar' zu erhalten und den Wert innerhalb des Procs zu übergeben. –

+0

@Evonet Ihre Excel-Spalte wird mit der von Ihnen bereitgestellten Abfrage ausgefüllt? Können Sie diese Logik ändern, um eine 'sp_executesql'-Anweisung anstelle von' exec' proc-Anweisung zu generieren? Wird das akzeptabel sein? Wenn ja, können Sie die Abfrage, die ich als Parameter zur Verfügung gestellt habe, in "sp_executesql" einfügen. –

1

verlieren gerade die select:

exec UpdateInvoices @InvoiceDate = cast(cast(42109 as datetime) as date) 
+0

Ich bekomme einen Syntaxfehler bei der zweiten Besetzung – Evonet

Verwandte Themen