Je veux créer un SP pour générer les métadonnées pour toutes les tables en utilisant des curseurs dans SQL. Voici le code que j'ai essayé. mais il devient une boucle sans fin et les mêmes données sont répétées. Merci d'avance.Le curseur devient une boucle sans fin
--SELECT * FROM information_schema.columns
ALTER PROCEDURE p1
AS
SET NOCOUNT ON;
DECLARE @id INT
, @tablename VARCHAR(100)
, @columnname VARCHAR(100)
, @datatype VARCHAR(100)
, @isnullable VARCHAR(100)
BEGIN
DECLARE CURSOR_1 CURSOR FOR
SELECT TABLE_NAME
, COLUMN_NAME
, DATA_TYPE
, IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Employee' -- group BY table_name
OPEN CURSOR_1
FETCH NEXT FROM CURSOR_1 INTO
@tablename,
@columnname,
@datatype,
@isnullable
WHILE @@fetch_status = 0
BEGIN
INSERT INTO table_schema_detail (TABLE_NAME, COLUMN_NAME, DATA_TYPE, isnullable)
VALUES (@tablename, @columnname, @datatype, @isnullable)
END
FETCH NEXT FROM CURSOR_1 INTO
@tablename,
@columnname,
@datatype,
@isnullable
CLOSE CURSOR_1
DEALLOCATE CURSOR_1
SET NOCOUNT OFF;
END
GO
Y at-il une raison de faire cela avec un curseur? – Lamak
@Lamak pourriez-vous me s'il vous plaît quelle est l'autre façon que je pourrais faire. dans mon information_schema.columns j'ai 3 tables et et chaque table a 4 colonnes chacune et j'ai donc utilisé des curseurs – user2646320
@Lamak j'ai dit 3 tables comme un exemple. En fait, j'ai beaucoup de tables dans mon projet disent environ 200 tables. et ceci pour montrer dans un rapport using SSIS et le client est spécifique qu'ils ont besoin en employant la procédure stockée que n'importe quelle autre partie de l'amélioration de la performance. – user2646320