none
bsp Abfrage mit Übergabeparameter RRS feed

  • 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

    Montag, 5. Oktober 2009 14:59

Antworten

  • Hallo,

    verwende
    @sql = 'bcp "SELECT * FROM ProduceData.dbo.ProzessDaten where timestamp = ' 
    + CAST(@Startzeit AS varchar(10))
    + ' queryout " '+@file_name+'" -c -t; -T '
    denn die Fehlermeldung sagt es eigentlich schon:
    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

    Montag, 5. Oktober 2009 20:29
    Beantworter

Alle Antworten

  • Hallo,

    verwende
    @sql = 'bcp "SELECT * FROM ProduceData.dbo.ProzessDaten where timestamp = ' 
    + CAST(@Startzeit AS varchar(10))
    + ' queryout " '+@file_name+'" -c -t; -T '
    denn die Fehlermeldung sagt es eigentlich schon:
    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

    Montag, 5. Oktober 2009 20:29
    Beantworter
  • Hallo Elmar,
    müsste das " vor dem Select nicht vor dem queryout wieder geschlossen werden?

    Gruß
    Christian
    Dienstag, 6. Oktober 2009 08:14
  • 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

    Dienstag, 6. Oktober 2009 09:52
    Beantworter
  • Hallo dftattender,

    Hat Dir die Antwort geholfen?

    Grüße,
    Robert

    Montag, 12. Oktober 2009 09:51
    Moderator
  • Hallo dftattender,

    Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert

    Mittwoch, 14. Oktober 2009 10:03
    Moderator