![]() |
Datenbank: MSDE • Zugriff über: ADO
SQL Stored Procedure. Tabelle als Parameter möglich ?
Habe folgende Stored Procedure
SQL-Code:
funktioniert, erscheint mir jedoch furchtbar umständlich.
Create Procedure DieLetzten (@n int, @aTableName varchar(2))
As SET ROWCOUNT @n if @aTableName = 'AN' Select Nummer, Datum from dbo.AN order BY Nummer DESC ELSE if @aTableName = 'AR' Select Nummer, Datum from dbo.AR order BY Nummer DESC ELSE if @aTableName = 'AU' Select Nummer, Datum from dbo.AU order BY Nummer DESC ELSE if @aTableName = 'BE' Select Nummer, Datum from dbo.BE order BY Nummer DESC ELSE if @aTableName = 'LS' Select Nummer, Datum from dbo.LS order BY Nummer DESC ELSE if @aTableName = 'MS' Select Nummer, Datum from dbo.MS order BY Nummer DESC return Kann man nicht die Tabelle als Parameter übergeben? Hab's selbst nicht geschafft. In etwa so:
SQL-Code:
Kann man das Ergebnis einer Stored Procedure in einer Variablen speichern (ähnlich einem Recordset in VBA) ?
Create Procedure DieLetzten(@n int, @aTable table)
As SET ROWCOUNT @n Select Nummer, Datum from @aTable order BY Nummer DESC return In etwa so:
SQL-Code:
oder Filtern
SET TheLast10 = Exec DieLetzten 10, "AR"
SQL-Code:
Gibt's irgendwo ein Tutorial was man mit SP's oder Triggern machen darf und was nicht ?
SELECT * from DieLetzen(10, AR) where Datum=@aDatum
Viele Fragen gleichzeitig, das ist alles so anders als mit Tabellen in Delphi. An den SP's und Tabellen bastle ich mit einem Access-Projekt herum, gibt's da was besseres das wenig (oder nix) kostet ? Der Zugriff von Delphi via ADO funktioniert prächtig. THX im Vorraus |
Re: SQL Stored Procedure. Tabelle als Parameter möglich ?
Zitat:
ein weiteres Feld, dass deine Kennungen AN, AR, AU, BE ... aufnimmt. Danach brauchst du nur noch:
SQL-Code:
Create Procedure DieLetzten (@n int, @aTableName varchar(2))
As SET ROWCOUNT @n Select Nummer, Datum from dbo.Tabelle order BY Nummer DESC WHERE Kennung=@aTableName return |
Re: SQL Stored Procedure. Tabelle als Parameter möglich ?
Hallo.
Eine vollständige Referenz für Transact-SQL findest du auf der MSDN WebSite: ![]() Oft, wenn dir etwas umständlich vorkommt, ist irgendwo der Wurm drin. In dem von dir geschilderten Fall liegt ein Datenmodellierungsfehler vor, wie Andreas schon geschrieben hat, während ich verzweifelt die richtigen Tasten auf meinem Keyboard suchte. Wenn die Tabellen einen identischen Aufbau haben, dann solltest du sie auch in einer einzigen Tabelle speichern, eventuell mit einem zusätzlichen Diskriminator. Ich weiß nicht, was du mit RowCount vorhast - die 10 letzten Einträge kannst du mit einem SELECT TOP 10 ... ORDER BY ... DESC Statement erhalten. Besser als Access ist auf jeden Fall die MSDE. Freundliche Grüße vom marabu |
Re: SQL Stored Procedure. Tabelle als Parameter möglich ?
Danke für Eure Antworten.
Muss wohl etwas umdenken beim Umstieg auf SQL. Das mit dem Rowcount hab ich hier im Forum gefunden.
SQL-Code:
ist natürlich viel besser.
SELECT TOP 10 ... ORDER BY ... DESC
Werd' Euch wohl in nächster Zeit mit weiteren SQL-Fragen quälen müssen. THX im Vorraus. |
Re: SQL Stored Procedure. Tabelle als Parameter möglich ?
Zitat:
SQL-Code:
unterstützt? Dann kannst Du Dir das SQL Statement dynamisch zusammenbauen, irgendiwe so:
EXECUTE IMMEDIATE _string_
SQL-Code:
sql='select * from '+tbname;
execute immediate sql; |
Re: SQL Stored Procedure. Tabelle als Parameter möglich ?
du kannst dir auch eine lösung mit union, statischen spalten und where bauen.
|
Re: SQL Stored Procedure. Tabelle als Parameter möglich ?
Also: Erstmal kann man sich in T-SQL (MSSQL Dialekt) einen SQL-Befehl zusammenbasteln und dann mit EXEC aufrufen:
Delphi-Quellcode:
Damit sollte dein Problem gelöst sein.
Create Procedure SelectTable @TableName VarChar (80) as
declare @SQLStmt VarChar (255) set @SQLStmt = 'SELECT TOP 10 * FROM '+@TableName+' WHERE Bla=Fasel ORDER BY Foo DESC' EXEC (@SQLStmt) Andersrum kannst du doch auch einfach das Select-Statement im Client per Delphi zusammenbasteln. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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