Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Sored Procedure Tabellenname als Variable nutzen (https://www.delphipraxis.net/152482-sored-procedure-tabellenname-als-variable-nutzen.html)

ibp 24. Jun 2010 08:09

Datenbank: interbase • Version: 6.5 • Zugriff über: PSQL

Sored Procedure Tabellenname als Variable nutzen
 
Hallo,

wie kann man einen in einer Variable gespeicherten Tabellennamen nutzen?

Hintergrund: Die Nodes eines Baumes zeigen auf unterschiedliche Tabellen. Diese Information ist in einer Tabelle gespeichert auf der der Baumdatensatz (TYPKEY = TABDEFPKEY) zeigt.

Beispiel:

SQL-Code:
CREATE PROCEDURE P_TESTGETDATA (
    treepkey integer)
as
declare variable tabname varchar(20);
begin
  for select MyTabName
        from Baum
        join Tabellendef on (TREETYPKEY = TABDEFPKEY)
       where BAUMPKEY = :treepkey
       into :tabname
  do
  begin
    select *
      from :tabname; /* <---- Das funktioniert nicht!!!!

    suspend;
  end
end^

borwin 24. Jun 2010 08:17

AW: Sored Procedure Tabellenname als Variable nutzen
 
Einen Tabellenname als Parameter in einer SP geht nicht.
Zu lösen wäre es über dynamisches SQL.
Geht aber in Interbase 6.5 nicht. :(



Gruß Borwin

Bernhard Geyer 24. Jun 2010 08:21

AW: Sored Procedure Tabellenname als Variable nutzen
 
Das düfte bei fast keinem DBMS funktionieren.
Hätte sowas vor fast ca. 10 Jahren für MS SQL-Server auch gebrauchen können.

AFAIK geht das nicht das hier der SP-"Compiler" hier nicht arbeiten kann da er keine Strategie festlegen kann da ja ein zentraler Information (welche Tabelle) Variabel ist.

chaosben 24. Jun 2010 08:39

AW: Sored Procedure Tabellenname als Variable nutzen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1031215)
Das düfte bei fast keinem DBMS funktionieren.

Bei Firebird ist das kein Problem ... "execute statement" heißt da das Zauberwort.

ibp 24. Jun 2010 08:43

AW: Sored Procedure Tabellenname als Variable nutzen
 
Zitat:

Zitat von chaosben (Beitrag 1031221)
Bei Firebird ist das kein Problem ... "execute statement" heißt da das Zauberwort.

laut IB SQL Reference gibt es das auch, nur bekomme ich es nicht hin. Wie würde der Befehl deiner Meinung nach aussehen?

chaosben 24. Jun 2010 08:50

AW: Sored Procedure Tabellenname als Variable nutzen
 
Zitat:

Zitat von ibp (Beitrag 1031223)
laut IB SQL Reference gibt es das auch

Ja nee ... das gibts in DSQL aber nicht in PSQL, welches du in Stored Procedures nutzt.
Lange Rede kurzer Sinn: Interbase (bis mindestens 2007): nein / Firebird (ab 1.5): ja


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz