Я хочу создать SP для генерации метаданных для всех таблиц с помощью курсоров в SQL. Ниже приведен код, который я пробовал. но он становится бесконечным циклом и теми же данными повторяется. Заранее спасибо.Курсор становится бесконечным циклом
--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
Есть ли причина для этого с помощью курсора? – Lamak
@ Lamak не могли бы вы рассказать мне, что я могу сделать другим способом. в моей inform_schema.columns у меня есть 3 таблицы, и каждая таблица имеет по 4 столбца каждый, поэтому я использовал курсоры – user2646320
@Lamak В качестве примера я привел 3 таблицы. на самом деле у меня много таблиц в моем проекте говорят около 200 таблиц. и это предназначено для показа в отчете с использованием SSIS, и клиент определен, что им необходимо использовать Хранимую процедуру, чем любой другой, в рамках повышения производительности. – user2646320