Announcement

Collapse
No announcement yet.

Variable als Text in PROCEDURE

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variable als Text in PROCEDURE

    Hallo,

    ich habe ein Problem bei der Durchführung einer PROCEDURE:
    Die PROCEDURE greift auf der Datenbank auf eine Tabelle (Variable 1) zu und führt verschiedene Berechnungsschritte durch. Als letzten Schritt möchte ich das Berechnungsdatum und Endergebnis mit der Bezeichnung der Tabelle und der verwendeten Spalte (Variable2) in eine neue Tabelle wegschreiben. Da ich die Abfrage in der PROCEDURE als Text darstelle, kann ich die Variable 1 für die INSERT INTO Abfrage nicht mit ' als Text markieren.
    Gibt es hier andere Möglichkeiten / einen Ausweg!?



    Hier die Abfrage:

    CREATE procedure ProzedurErgebnisse (@TableName1 sysname, @merkmal nvarchar(50))
    AS
    declare @Query nvarchar(4000)
    SET @Query ='

    ...

    insert into Ergebnisse (Berechnungsdatum, Tabelle, Merkmal, Teilergebnis)
    values (getdate()
    ,'+ @TableName1 +'
    ,'+ @merkmal +'
    ,Teilergebnis);
    '

    exec sp_executesql @Query;

  • #2
    Ich weiß nicht, ob ich die Frage richtig verstanden habe, aber Du kannst innerhalb einer Abfrage, die mit Hochkommata ' begrenzt ist, zwei Hochkommata '' jeweils als Begrenzer für einen String nutzen.

    Z.B. so:
    select * from openquery(test2,'select * from tabelle where stringspalte = ''Gitarre''')

    Comment


    • #3
      Danke für die schnelle Antwort. Aber damit funktioniert es nicht. Dies liegt daran, dass die @TableName1 in der Abfrage Variablen sind.
      Wenn ich die " verwende, sieht die Ausführung der PROCEDURE diese Abfrage vor:
      insert into Ergebnisse (Berechnungsdatum, Tabelle, Merkmal, Teilergebnis)
      values (getdate()
      ," Bilanzen "
      ," Eigenkapital1 "
      ,Teilergebnis)

      Da kommt SQL mit den " nicht klar.

      Comment


      • #4
        Hallo appendix,
        Originally posted by appendix View Post
        Wenn ich die " verwende, sieht die Ausführung der PROCEDURE diese Abfrage vor:
        insert into Ergebnisse (Berechnungsdatum, Tabelle, Merkmal, Teilergebnis)
        values (getdate()
        ," Bilanzen "
        ," Eigenkapital1 "
        ,Teilergebnis)
        StefanBO meinte nicht ein doppeltes Hochkomma sondern zwei einfache Hochkomma. Ein einfaches Hochkomma gilt als Escapezeichen für ein einfaches Hochkomma.

        In etwa so:
        [highlight=sql]DECLARE @Query nvarchar(4000)
        DECLARE @TableName1 sysname
        DECLARE @merkmal nvarchar(10)

        SET @TableName1 = 'MyTable'
        SET @merkmal = 'WHATEVER'
        SET @Query ='
        insert into Ergebnisse (Berechnungsdatum, Tabelle, Merkmal, Teilergebnis)
        values (getdate()
        ,''' + @TableName1 + '''
        ,''' + @merkmal + '''
        ,Teilergebnis);
        '
        PRINT @Query[/highlight]

        lg chapster

        Comment


        • #5
          Hallo chapster,

          hab es mit zwei Hochkommata versucht. Läuft auch nicht durch.
          Danke trotzdem.

          Viele Grüße,
          appendix

          Comment


          • #6
            Originally posted by appendix View Post
            hab es mit zwei Hochkommata versucht.
            wie hast Du das versucht?
            Originally posted by appendix View Post
            Läuft auch nicht durch.
            Es gibt bestimmt eine Fehlermeldung, die anders lautet...

            Comment


            • #7
              Originally posted by appendix View Post
              hab es mit zwei Hochkommata versucht. Läuft auch nicht durch.
              in Wirklichkeit müssen es ja dann 3 sein und nicht zwei (siehe mein Beispiel)
              wo liegt denn der Fehler? kannst du die Prozedur nicht erstellen oder gibt es einen Fehler bei der Laufzeit? Was für eine Fehlermeldung?
              Am besten postest du die ganze Prozedur und auch den Tabellenaufbau mit Datentypen sonst wird es schwer dir zu helfen

              lg chapster

              Comment


              • #8
                Hab die Prozedur nochmal neu aufgesetzt und die drei Hochkommata verwendet. Läuft.

                Vielen Dank für Eure Unterstützung!

                Comment

                Working...
                X