Announcement

Collapse
No announcement yet.

Tabellenname in String angeben

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

  • Tabellenname in String angeben

    Guten Tag

    ich habe das folgende Problem:

    In einem Trigger habe ich ein Insert-Statement in dem ich IDs von einer Tabelle übergeben möchte, welche (die Tablle) ich in einem String definiere zb. so

    SELECT @tableName = 'Adressen'
    DECLARE crs INSENSITIVE CURSOR FOR (SELECT ID FROM @tablename)
    FETCH NEXT FROM crs INTO @crsID
    :loop
    (
    INSERT INTO ZusatzInfo (herkunftID) VALUES (@crsID)
    )


    den teil vom ID einlesen im cursoer hab ich wiefolgt gelöst

    SELECT @tableName = 'Adressen'
    SELECT @tableQuery = 'INSERT INTO #TempTable (ID) SELECT ID FROM ' + @Adressen
    CREATE TABLE #tempTable(ID)
    EXEC (@tableQuery)
    DECLARE crs INSENSITIVE CURSOR FOR (SELECT * FROM #tempTable)

    Gibt es eine möglichkeit den String als Tabellenname anzugeben, ohne eine temporäre Tabelle zu erstellen?

    Danke im voraus

  • #2
    Indem Du alles in einen String packts, in dem Du dann die gewünschten Tabellennamen ersetzt und den über exec bzw besser exec sp_executeSQL ausfürhst...

    Comment


    • #3
      Ich nehme an

      du meinst den vollständigen loop? à la

      SELECT @tableName
      SELECT @queryString = 'DECLARE crs INSENSITIVE CURSOR FOR (SELECT ID FROM ' + @tablename + ' )
      FETCH NEXT FROM crs INTO @crsID
      :loop
      (
      INSERT INTO ZusatzInfo (herkunftID) VALUES (@crsID)
      )'

      exec (@queryString)



      da finde ich die variante mit der tempTable persönlich besser

      Comment

      Working...
      X