У меня есть две процедуры - два огромных набора выборов с помощью нескольких подвыборов и объединений. Мне нужно к результатам объединения этих процедур, и мне все еще нужны они к, существует отдельно.
Что-то как этот:
if @Param = 1 Then
PROCEDURE1
if @Param = 2 THEN
PROCEDURE2
if @Param = 3 Then
PROCEDURE1 union PROCEDURE2
Я считал, что невозможно иметь объединение на процедурах, и я не могу использовать временные таблицы.
Какая-либо идея?
Вы можете преобразовать процедуры для просмотра.
ИЛИ
Вы можете выполнить процедуры в таблицу TEMP, а затем выполните другую в ту же TEMP таблицу:
create table #sometable (table definition here)
if @Param = 1 or @Param = 3 begin
insert #sometable exec PROCEDURE1
end
if @Param = 2 or @Param = 3 begin
insert #sometable exec PROCEDURE2
end
select * from #sometable
Есть различные способы справиться с ситуацией:
В вопросе не хватает конкретных деталей, поэтому трудно рекомендовать друг другу, а тем более дать индивидуальный ответ. Вполне возможно, что логика может быть выполнена в рамках одного запроса.
Без использования временных таблиц я могу думать только о двух других способах.
Преобразуйте "с" в представления, если это возможно.
Переместить логику, на которой proc вызывается в ваше приложение (если она существует). Пусть она запустит каждый proc отдельно и объединит результаты.
Процедуры можно преобразовать в виды.
ИЛИ
Можно выполнить процедуры во временную таблицу, а затем выполнить другую во временную таблицу:
create table #sometable (table definition here)
if @Param = 1 or @Param = 3 begin
insert #sometable exec PROCEDURE1
end
if @Param = 2 or @Param = 3 begin
insert #sometable exec PROCEDURE2
end
select * from #sometable
-121--4691068- Возможно, веб-камера на другом компьютере сломана/неисправна? Или имеет одну из веб-камер, которая не поддерживает API DirectShow, на котором, я думаю, AForge опирается.
-121--3266150-Можно либо:
1) Вставьте данные во временную таблицу, затем ВЫБЕРИТЕ из этой таблицы:
--Define #t here, with correct schema to match results returned by each sproc
INSERT #t EXECUTE PROC1
INSERT #t EXECUTE PROC2
SELECT * FROM #t
2) Просто верните 2 результата из хранимой процедуры и дайте вызывающему коду обработать 2 результата