если можно превратить алгоритм расчета во что-то, что можно назвать многократно, Вы могли выпустить управление, поддерживают браузер через короткие интервалы при помощи setTimeout с коротким значением тайм-аута.
, Например, что-то вроде этого...
function doCalculation()
{
//do your thing for a short time
//figure out how complete you are
var percent_complete=....
return percent_complete;
}
function pump()
{
var percent_complete=doCalculation();
//maybe update a progress meter here!
//carry on pumping?
if (percent_complete<100)
{
setTimeout(pump, 50);
}
}
//start the calculation
pump();
Какую версию SQL Server вы используете? В SQL Server 2008 вы можете использовать Параметры таблиц и типы таблиц .
Альтернативный подход - вернуть табличную переменную из пользовательской функции, но я не большой поклонник этого метода.
Вы можете найти пример здесь
Тип возврата процедуры - int.
Вы также можете возвращать наборы результатов (как и ваш код в настоящее время) (хорошо, вы также можете отправлять сообщения, которые являются строками)
Это единственное «возвращение», которое вы можете получить. Хотя вы можете добавлять в процедуру параметры, возвращающие табличное значение (см. BOL), они только вводятся.
Изменить:
(Или, как упоминалось в другом плакате, вы также можете использовать табличную функцию, а не процедуру )
Взгляните на этот код,
CREATE PROCEDURE Test
AS
DECLARE @tab table (no int, name varchar(30))
insert @tab select eno,ename from emp
select * from @tab
RETURN