У меня есть процедура, где я передаю временное имя таблицы в качестве параметра. Для каждого набора данных внутри мне нужно получить количество строк. Как этого добиться?
Мне нужно что-то вроде:
CREATE PROCEDURE sp_processing
@temp_table_name varchar(50)
AS
DECLARE @log varchar(max)
/* get list of keys inside temp_table_name */
/* just a pseudo-code example */
SET @l_cursor = CURSOR FOR
SELECT Key1, Key2, Key3, count(*)
FROM @temp_table_name -- table name passed as text
GROUP by Key1, Key2, Key3;
WHILE "there are results"
BEGIN
@log += @Key1 +', '+ @Key2 +', '+ @Key3 +', '+ @count + CHAR(13)+CHAR(10);
END
UPDATE log_table SET log_column = @log WHERE....;
END /* procedure */
Есть ли способ зациклить это?
Я знаю, что могу выбрать результаты для типа table
и цикла THEN, но для этого требуется использовать тип таблицы, поэтому интересно, достижимо ли это без табличной переменной.
РЕДАКТИРОВАТЬ : мне просто нужно распечатать счетчик для каждого набора ключей.