Bonjour à tous, je suis en train d'écrire une procédure PL/SQL pour
lister tous les enregistrements présents dans toutes les tables de ma
base et ainsi générer les requêtes INSERT appropriées pour repeupler ma
base ( je travaille avec SQL Server 2000 et je n'ai trouvé cette
fonctionnalité en natif nul part )
Voici ma procédure :
-- déclaration des variables
DECLARE @table sysname
DECLARE @champ sysname
DECLARE @champs varchar(8000)
DECLARE @values varchar(8000)
DECLARE @nb_champs int
-- déclaration du curseur qui va lister toutes les tables de la base
DECLARE TABLECURSOR CURSOR
FOR SELECT sysobjects.name As nom
FROM sysobjects
WHERE (sysobjects.xtype = 'U') AND (sysobjects.name != 'dtproperties')
-- ouverture du curseur et parcourt
OPEN TABLECURSOR
FETCH NEXT FROM TABLECURSOR
INTO @table
-- on parcourt tous les enregistrements
WHILE @@FETCH_STATUS = 0
BEGIN
SET @champs = ''
SET @nb_champs = 0
-- déclaration du curseur de parcourt des champs
DECLARE FIELDCURSOR CURSOR
FOR SELECT syscolumns.name AS colonne
FROM sysobjects,syscolumns
WHERE ( sysobjects.id = syscolumns.id) And (sysobjects.name = @table)
-- on récupère alors tous les champs de la table
OPEN FIELDCURSOR
FETCH NEXT FROM FIELDCURSOR
INTO @champ
-- on zappe le 1er champ qui est la clé primaire
FETCH NEXT FROM FIELDCURSOR
INTO @champ
WHILE @@FETCH_STATUS = 0
BEGIN
IF @champs != ''
BEGIN
SET @champs = @champs + ', '
END
SET @champs = @champs + @champ
SET @nb_champs = @nb_champs + 1
FETCH NEXT FROM FIELDCURSOR
INTO @champ
END
CLOSE FIELDCURSOR
DEALLOCATE FIELDCURSOR
--PRINT @table + ' ( ' + CAST(@nb_champs AS VARCHAR) + ' ) - ' + @champs
DECLARE VALUESCURSOR CURSOR
FOR SELECT @champs FROM @table
OPEN VALUESCURSOR <---
FETCH NEXT FROM valuescursor
INTO @values
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @values
FETCH NEXT FROM valuescursor
INTO @values
END
CLOSE valuescursor
DEALLOCATE valuescursor
-- on avance à la prochaine table
FETCH NEXT FROM TABLECURSOR
INTO @table
END
-- fermeture et destruction
CLOSE TABLECURSOR
DEALLOCATE TABLECURSOR
j'ai un chti problème, ligne 62 ( voir le <--- ) il me dit qu'il faut que je déclare la variable @table

Quelqu'un peut - t -il m'aider svp merci