Benutzer mit den meisten Antworten
bsp Abfrage mit Übergabeparameter

Frage
-
Hallo zusammen,
ich habe folgendes Problem
meine Proc bring mir immer eine Fehermeldung
Msg 245, Level 16, State 1, Procedure proc_generate_csv_1, Line 11
Conversion failed when converting the varchar value 'bcp "SELECT * FROM ProduceData.dbo.ProzessDaten where timestamp = ' to data type int.
create
PROCEDURE dbo.proc_generate_csv_1
(
@file_name
as varchar(100),
@Startzeit
int
)
AS
DECLARE
@sql VARCHAR(4000)
set
@sql = 'bcp "SELECT * FROM ProduceData.dbo.ProzessDaten where timestamp = ' + @Startzeit + ' queryout " '+@file_name+'" -c -t; -T '
--SELECT @sql = 'bcp "SELECT * FROM ProduceData.dbo.ProzessDaten" queryout d:\Export\CsvExport.csv -c -t; -T '
EXEC
master..xp_cmdshell @sql
GO
wenn ich sie aufrufe
EXEC
proc_generate_csv_1 'D:\Export\spalten.csv',1236670770
was mache ich falsch?
Danke
Antworten
-
Hallo,
verwende
@sql = 'bcp "SELECT * FROM ProduceData.dbo.ProzessDaten where timestamp = '
denn die Fehlermeldung sagt es eigentlich schon:
+ CAST(@Startzeit AS varchar(10))
+ ' queryout " '+@file_name+'" -c -t; -T '
Der SQL Server geht bei der Konvertierung nach der Rangfolge der Datentypen (Transact-SQL) vor.
Und danach müßte die Zeichenketten in einen Integer gewandelt werden,
der eine höhere Rangfolge hat.
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 12. Oktober 2009 09:51
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 14. Oktober 2009 10:03
Alle Antworten
-
Hallo,
verwende
@sql = 'bcp "SELECT * FROM ProduceData.dbo.ProzessDaten where timestamp = '
denn die Fehlermeldung sagt es eigentlich schon:
+ CAST(@Startzeit AS varchar(10))
+ ' queryout " '+@file_name+'" -c -t; -T '
Der SQL Server geht bei der Konvertierung nach der Rangfolge der Datentypen (Transact-SQL) vor.
Und danach müßte die Zeichenketten in einen Integer gewandelt werden,
der eine höhere Rangfolge hat.
Gruß Elmar
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 12. Oktober 2009 09:51
- Als Antwort markiert Robert BreitenhoferModerator Mittwoch, 14. Oktober 2009 10:03
-
Hallo Christian,
ich habe Deine Zeichenfolge nur um den CAST erweitert, ansonsten alles beim alten belassen.
Da fehlt bei Dir allerdings noch eine doppeltes Anführungszeichen vor dem queryout,
um die SELECT Anweisung abzuschliessen.
Gruß Elmar