J'essaye de créer une procédure stockée sous TSQL qui liste toutes les tables d'une base (instantané) et qui, pour chaque table, donne le nombre de lignes de la table (ça me semble l'être moins !)

Je fais quelque chose comme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
create or ALTER procedure [dbo].[liste_tables_et_lignes] 
as 
DECLARE curseur_tables CURSOR FOR 	SeLECT name as nom from sys.tables where upper(name) not like '$SEQ%'  order by 1;
declare @nom varchar(60);
declare @nblignes int;
begin
OPEN curseur_tables ;
FETCH NEXT from curseur_tables INTO @nom;
 print @nom;
WHILE @@FETCH_STATUS = 0
   BEGIN
    FETCH curseur_tables INTO @nom;
    select @nblignes=count(*) from @tmp;
      print @nom+'  '+@nblignes;
   end
close curseur_tables;
deallocate curseur_tables;
end
La difficulté est de passer d'une chaine de caractères à une table ayant ce nom.
Faisable ou pas ? Une idée ? Merci d'avance.