AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Stored Procedure. Tabelle als Parameter möglich ?

SQL Stored Procedure. Tabelle als Parameter möglich ?

Ein Thema von Ferber · begonnen am 13. Jan 2006 · letzter Beitrag vom 16. Jan 2006
Antwort Antwort
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#1

SQL Stored Procedure. Tabelle als Parameter möglich ?

  Alt 13. Jan 2006, 17:03
Datenbank: MSDE • Zugriff über: ADO
Habe folgende Stored Procedure
SQL-Code:
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
funktioniert, erscheint mir jedoch furchtbar umständlich.

Kann man nicht die Tabelle als Parameter übergeben? Hab's selbst nicht geschafft.
In etwa so:
SQL-Code:
Create Procedure DieLetzten(@n int, @aTable table)
As
  SET ROWCOUNT @n
  Select Nummer, Datum from @aTable order BY Nummer DESC
return
Kann man das Ergebnis einer Stored Procedure in einer Variablen speichern (ähnlich einem Recordset in VBA) ?
In etwa so:
SET TheLast10 = Exec DieLetzten 10, "AR" oder Filtern
SELECT * from DieLetzen(10, AR) where Datum=@aDatum Gibt's irgendwo ein Tutorial was man mit SP's oder Triggern machen darf und was nicht ?
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
Otto
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: SQL Stored Procedure. Tabelle als Parameter möglich ?

  Alt 13. Jan 2006, 18:07
Zitat von Ferber:
...funktioniert, erscheint mir jedoch furchtbar umständlich.
Du musst alle Daten in eine Tabelle packen. Die Tabelle erhält zusätzlich
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
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: SQL Stored Procedure. Tabelle als Parameter möglich ?

  Alt 13. Jan 2006, 18:18
Hallo.

Eine vollständige Referenz für Transact-SQL findest du auf der MSDN WebSite: klick

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
  Mit Zitat antworten Zitat
Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#4

Re: SQL Stored Procedure. Tabelle als Parameter möglich ?

  Alt 13. Jan 2006, 19:03
Danke für Eure Antworten.
Muss wohl etwas umdenken beim Umstieg auf SQL.
Das mit dem Rowcount hab ich hier im Forum gefunden.
SELECT TOP 10 ... ORDER BY ... DESC ist natürlich viel besser.
Werd' Euch wohl in nächster Zeit mit weiteren SQL-Fragen quälen müssen.
THX im Vorraus.
Otto
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
679 Beiträge
 
Delphi 12 Athens
 
#5

Re: SQL Stored Procedure. Tabelle als Parameter möglich ?

  Alt 16. Jan 2006, 13:08
Zitat von Ferber:
Kann man nicht die Tabelle als Parameter übergeben? Hab's selbst nicht geschafft.
wird eventuell EXECUTE IMMEDIATE _string_ unterstützt? Dann kannst Du Dir das SQL Statement dynamisch zusammenbauen, irgendiwe so:
SQL-Code:
sql='select * from '+tbname;
execute immediate sql;
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#6

Re: SQL Stored Procedure. Tabelle als Parameter möglich ?

  Alt 16. Jan 2006, 13:25
du kannst dir auch eine lösung mit union, statischen spalten und where bauen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: SQL Stored Procedure. Tabelle als Parameter möglich ?

  Alt 16. Jan 2006, 14:14
Also: Erstmal kann man sich in T-SQL (MSSQL Dialekt) einen SQL-Befehl zusammenbasteln und dann mit EXEC aufrufen:
Delphi-Quellcode:
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)
Damit sollte dein Problem gelöst sein.

Andersrum kannst du doch auch einfach das Select-Statement im Client per Delphi zusammenbasteln.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz