Entwickler-Ecke

Datenbanken - Stored procedure als Spalte in View benutzen: wie?


uko - Sa 17.11.07 23:22
Titel: Stored procedure als Spalte in View benutzen: wie?
Hallo,

nachdem ich grad versuche mit den stored procedures von Firebird klar zu kommen: ist es möglich, eine SP als Spalte in einem View zu verwenden?:


SQL-Anweisung
1:
2:
3:
create view TESTVIEW as 
  select test_col_1, MyStoredProcedure(test_col_2)
  from TESTTABLE;


MyStoredProcedure ist dann eine SP, die genau einen Wert zurückgibt. Geht so was (ich hab's nicht hingebracht)? Und wenn nicht, wie behandelt ihr solche Situationen? Alles in eine zweite SP auslagern die sich die einzelnen Werte zusammenklaubt und dann als selectable SP diese aufrufen?


Grüße,
Uli


UGrohne - Sa 17.11.07 23:36

Du musst die Rückgabe einer SP als Tabelle sehen, dann kannst Du diesen einen Rückgabewert auch mit Hilfe eines JOINS oder Kreuzprodukts mit in Dein Ergebnis einbauen.

SQL-Anweisung
1:
2:
3:
create view TESTVIEW as 
  select testtable.*, sp.*
  from TESTTABLE, MyStoredProcedure(test_col_2) as sp;


uko - Sa 17.11.07 23:47

Danke! Manchmal scheint das Naheliegendste doch ziemlich weit entfernt zu sein :)

*edit:* jetzt war ich zu schnell. Als einzelnes Select-Statement funktioniert die Lösung zwar, aber nicht im View. Da bekomme ich immer einen Fehler (Feature not supported). Hab jetzt mal in der IB6 Doku nochmal nachgeschaut: dort steht geschrieben, daß ein View nicht auf der Ergebnismenge einer Stored Procedure basieren kann :( Gilt das auch noch für Firebird? (habe die 2.0.3 installiert)


Grüße,
Uli


UGrohne - So 18.11.07 00:15

user profile iconuko hat folgendes geschrieben:
Danke! Manchmal scheint das Naheliegendste doch ziemlich weit entfernt zu sein :)

*edit:* jetzt war ich zu schnell. Als einzelnes Select-Statement funktioniert die Lösung zwar, aber nicht im View. Da bekomme ich immer einen Fehler (Feature not supported). Hab jetzt mal in der IB6 Doku nochmal nachgeschaut: dort steht geschrieben, daß ein View nicht auf der Ergebnismenge einer Stored Procedure basieren kann :( Gilt das auch noch für Firebird? (habe die 2.0.3 installiert)


Grüße,
Uli

Hui, das wusste ich jetzt auch noch nicht :shock:. Ok, ich brauch auch sehr selten Views, aber wenn FB 2.0.3 sagt, dass es nicht supported sei, dann wird das wohl leider der Fall sein :(. Bleibt also noch die Möglichkeit, eine weitere SP daraus zu machen, statt eines Views.