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 :
La difficulté est de passer d'une chaine de caractères à une table ayant ce nom.
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
Faisable ou pas ? Une idée ? Merci d'avance.
Partager