![]() |
Datenbank: firebird • Version: 2.1 • Zugriff über: ib expert
temporäre tabelle erstellen in stored procedure?
hallo alle zusammen!
ich beiße mir grad die zähne aus, daran eine temp tabelle zu createn im ibexpert. wenn ich create table schreibe, kennt er create nicht, also muss ich die syntax in ein "execute statement" packen. das klappt auch alles wunderbar. die tabelle ist nach einem commit da. jedoch möchte ich mit der tabelle IN der prozedur arbeiten und da sagt mir schon der compiler, dass er den namen der tabelle nicht kennt... ein commit zwischen durch zu machen, habe ich auch versucht, aber bringt leider auch nix. :( wäre sehr dankbar wenn mir jemand helfen könnte :) |
AW: temporäre tabelle erstellen in stored procedure?
Hilft Dir das Stichwort "GLOBAL TEMPORARY TABLE" weiter?
|
AW: temporäre tabelle erstellen in stored procedure?
Code:
declare @table table (foo int, bar varchar(10))
insert into @table (foo,bar) values (1,'bar') |
AW: temporäre tabelle erstellen in stored procedure?
@Iwo Asnet: Das geht in Firebird jetzt auch so wie in MSSQL? Das habe ich noch gar nicht gewusst, das ist ja cool.
|
AW: temporäre tabelle erstellen in stored procedure?
Zitat:
So scheint es vielen zu gehen, Tante Google hat da auch nur MSSQL gefunden. gibt's da einen Link? Gruß K-H |
AW: temporäre tabelle erstellen in stored procedure?
Zitat:
Ich schwöre! Eben stand oben noch MSSQL! :oops: |
AW: temporäre tabelle erstellen in stored procedure?
Ich würde eine temporäre Tabelle außerhalb der Stored Procedure erstellen und die dann halt in der SP verwenden. Die Tabellendefinition einer temporären Tabelle ist global und kann von jedem verwendet werden. Die Daten sind dann halt "lokal" zur Transaktion bzw. Connection, je nach Verwendung.
Siehe: ![]() |
AW: temporäre tabelle erstellen in stored procedure?
Zitat:
|
AW: temporäre tabelle erstellen in stored procedure?
Wozu werden denn diese temporären Daten gebraucht ? Ich vermute stark, ein ClientDataset wäre da wesentlich praktikabler. Auch bekannt unter dem Namen "InMemoryTable". Die beschriebenen Probleme wäre dann so jedenfalls nie aufgetaucht.
|
AW: temporäre tabelle erstellen in stored procedure?
Zitat:
Das löst ja alles. Kannst du uns auch noch erklären wie man in der Stored Procedure damit arbeitet? |
AW: temporäre tabelle erstellen in stored procedure?
Zitat:
In der Frage steht das Wort "temporär" und dann noch "stored". Das widerspricht sich etwas. Ich speichere also etwas, was nur zu kurzzeitigem Gebrauch genutzt wird. Da stellt sich die Frage, warum ich das überhaupt anlege und wieder lösche. Und dazu die SP permanent in der DB haben ? Gehts vielleicht auch anders ? |
AW: temporäre tabelle erstellen in stored procedure?
Temporäre Tabellen machen schon Sinn. Wenn ich eine Tabelle mit vielen Datensätzen oder einen View mit Joins habe, können Berechnungen trotz Where-Klausel teilweise lange dauern.
Wenn man den interessanten Bereich erst insgesamt in eine Temporäre Tabelle Kopiert und dann seine Berechnungen auf diese anwendet kann man den ganzen Vorgang erheblich schneller machen. Ich konnte so den Faktor 10 und mehr erreichen. |
AW: temporäre tabelle erstellen in stored procedure?
Wie wärs damit:
Code:
(siehe dazu
create global temporary table MyConnGTT (
id int not null primary key, txt varchar(32), ts timestamp default current_timestamp ) on commit preserve rows; ![]() Wenn Du eh mit einer Stored Procedure arbeiten willst, tut's doch vielleicht auch ein
Code:
In dem die benötigten Daten zusammen geraffelt und bearbeitet werden?
FOR select_statement DO
compound_statement Eine temporäre Tabelle macht m.E. eher selten Sinn. Und ein TClientDataset zur Datenverarbeitung macht nur Sinn, wenn es der Server nicht kann, wenn mir Bandbreite und Laufzeit egal ist oder wenn ich meinen Verarbeitungs-Code verstecken muss/möchte. P.S.: Wichtig bei der Tabellendefinition ist der On Commit Teil. Lebensdauer Transaktion oder ganze Connection..? An der Stelle bist Du vielleicht gestolpert. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:50 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 by Thomas Breitkreuz