Я использую хранимую процедуру более 1,5 лет.Но я никогда не задумывался о том, как данные извлекаются из пользовательского интерфейса или другой хранимой процедуры.
Когда я пишу простую хранимую процедуру.например.
CREATE PROCEDURE sp_test
AS
BEGIN
SELECT * FROM tblTest --Considering table has 3 columns.
END
Как C # получает этот результат в DataTable.
Всякий раз, когда мне приходится использовать результат этой процедуры в другой процедуре, я думаю, что мы имеемсоздать параметр с табличным значением, используя тип данных таблицы, и присвоить его результат переменной таблицы.Я никогда не пробовал.
CREATE PROCEDURE sp_testcall
AS
BEGIN
@temp = exec sp_test -- I think this would be the way, never tried
END
Если приведенный выше пример кода верен, то в чем разница между использованием вышеуказанного метода и запроса для вставки записей во временную таблицу?
CREATE PROCEDURE sp_test
AS
BEGIN
SELECT * INTO #tmp FROM tblTest --Considering table has 3 columns.
END
Казалось бы, копирование результата во временную таблицу требует еще одного усилия от сервера sql.Но что будет происходить за кулисами?Будет ли он непосредственно присваивать ссылки на результат в табличный параметр или использует тот же процесс, что и временная таблица?
Мой вопрос может быть неясным.Но я постараюсь улучшить.