Announcement

Collapse
No announcement yet.

Procedure soll verschiedene Tabellen verarbeiten

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

  • Procedure soll verschiedene Tabellen verarbeiten

    Hallo,

    ich habe folgendes Problem:

    Ich muss eine vielzahl an Tabellen derselben struktur verarbeiten und wollte mir den Code verkürzen über eine SQL Procedure wie folgt:

    CREATE PROCEDURE (@Table1, @table2)

    AS

    BEGIN

    INSERT INTO Tabellenname_Ziel

    Select irgendwas von @table1
    und Select irgendwas von @table2

    END

    Wie kann ich bereits existierende Tabellen in einer Procedure als Inputvariablen übergeben.

    Vielen Dank

  • #2
    Hallo und willkommen!

    Standardmäßig geht das überhaupt nicht: Variabel sind nur Werte, aber keine Elemente der Datenbank selbst.

    Bei verschiedenen DBMS gibt es unterschiedliche Möglichkeiten, das trotzdem zu lösen. Deshalb ist es in diesem Fall besonders wichtig, das DB-System zu kennen; dann kann die Frage vermutlich auch im richtigen Unterforum gestellt werden bzw. dorthin verschoben werden. Aber dazu müssen wir erst wissen:

    Mit welchem DB-System arbeitest du?

    Gruß Jürgen

    Comment


    • #3
      ich arbeite auf einem MS SQL Server 2008

      VG

      Frank

      Comment


      • #4
        Hallo,

        meinst du in etwa so:[highlight=sql]create table input (i int, c nvarchar(10))
        create table tableA (i int, c nvarchar(10))
        create table tableB(i int, c nvarchar(10))
        GO
        alter procedure InsertFromTable (
        @TableName1 sysname,
        @TableName2 sysname
        )
        as
        declare @Query nvarchar(4000)
        set @Query =
        'INSERT INTO input
        SELECT * FROM ' + @TableName1 + '
        UNION ALL
        SELECT * FROM ' + @TableName2

        exec sp_executesql @Query
        GO
        exec InsertFromTable 'tableA', 'tableB'[/highlight]bin mir nicht sicher ob ich die Frage auch richtig verstanden habe.

        lg chapster

        Comment


        • #5
          Oder willst Du bestehende Tabellennamen auslesen und in eine Variable schreiben?
          z.B.
          Code:
          Declare @tabellen table(id int IDENTITY, name varchar(50))
          Insert Into @tabellen
          SELECT name 
          FROM sys.objects 
          WHERE name like '%es_772%' and schema_id = 1 
          ORDER BY name

          Comment


          • #6
            ne - der erste Lösungsweg klappt ganz wunderbar - Problem erkannt, Problem gebannt. Vielen Dank!

            Comment

            Working...
            X