Funktion zur Anzahl der Datensätze einer Tabelle

13/12/2007 - 16:10 von Frank Massel | Report spam
Ein freundliches Hallo an die SQL-Server-Newsgroup !

Ich (TSQL-Anfànger, SQL-Server 2005) suche eine Lösung zu folgender
(peinlicher?) Frage:

Wie erstellt man eine Funktion (zur Not auch gespeicherte Prozedur), der man
als Eingabe-Parameter einen Tabellennamen als varchar(128) übergibt und die
die Anzahl der Datensàtze dieser Tabelle als int-Wert zurückliefert.

Mein gescheiterter Lösungsversuch:

In der Funktion den 'SELECT @AnzSaete = COUNT(*) FROM ' + @TabName'-Befehl
als Zeichenkette mit sp_executesql ausführen lassen (inkl.
Parameterdeklaration usw.).

(Sinngemàße) Fehlermeldung bei der Ausführung der Funktion:
"Nur Funktionen und erweiterte Gespeicherte Prozeduren dürfen in Funktionen
verwendet werden". Na prima...

In den diversen Hilfen und in den hier in der Newsgroup veröffentlichten
Antworten zum Thema "dynamische SQL-Befehle" habe ich für diesen Fall (Es
wird nur eine Zahl = Anzahl Datensàtze zurückgeliefert nichts gefunden).

Gibt es dazu eine Lösung oder existiert dazu schon irgendeine
Systemsicht/Systemfunktion/..., die entweder für eine vorzugebende oder sogar
für alle Tabellen die Anzahl der Datensàtze liefert ?

Vielen Dank im voraus und viele Grüße

Frank Massel
 

Lesen sie die antworten

#1 Christa Kurschat
13/12/2007 - 17:14 | Warnen spam
Hallo Frank,

"Frank Massel" schrieb im Newsbeitrag
news:
Ein freundliches Hallo an die SQL-Server-Newsgroup !

Ich (TSQL-Anfànger, SQL-Server 2005) suche eine Lösung zu folgender
(peinlicher?) Frage:

Wie erstellt man eine Funktion (zur Not auch gespeicherte Prozedur), der


man
als Eingabe-Parameter einen Tabellennamen als varchar(128) übergibt und


die
die Anzahl der Datensàtze dieser Tabelle als int-Wert zurückliefert.

Mein gescheiterter Lösungsversuch:

In der Funktion den 'SELECT @AnzSaete = COUNT(*) FROM ' + @TabName'-Befehl
als Zeichenkette mit sp_executesql ausführen lassen (inkl.
Parameterdeklaration usw.).

(Sinngemàße) Fehlermeldung bei der Ausführung der Funktion:
"Nur Funktionen und erweiterte Gespeicherte Prozeduren dürfen in


Funktionen
verwendet werden". Na prima...

In den diversen Hilfen und in den hier in der Newsgroup veröffentlichten
Antworten zum Thema "dynamische SQL-Befehle" habe ich für diesen Fall (Es
wird nur eine Zahl = Anzahl Datensàtze zurückgeliefert nichts gefunden).

Gibt es dazu eine Lösung oder existiert dazu schon irgendeine
Systemsicht/Systemfunktion/..., die entweder für eine vorzugebende oder


sogar
für alle Tabellen die Anzahl der Datensàtze liefert ?




so wie Du das machen willst, geht es nicht als Funktion.

Du mußt dazu eine Prozedur erstellen.

create proc p_Aznal_DS (@tabname varchar (128)) as

declare @sql varchar(1000)
set @sql = 'select count(*) from ' + @tabname

exec (@sql)


Lies dazu auch
http://www.insidesql.de/content/view/164/29/

Gruß
Christa
Access-FAQ: http://www.donkarl.com
SQL-Server-FAQ: www.sqlfaq.de
InsideSql: www.insidesql.de
Suchen in den Newsgroups:
http://groups.google.de/advanced_gr...p;ie=UTF-8

Ähnliche fragen