Я хочу выполнить это из Excel (окно запроса SQL), где я обычно выполнял бы только оператор select. Должен ли я сделать это в сохраненной процедуре, а затем выполнить tat из Excel?Является ли это сохраненным способом t sql
BEGIN TRY
drop table GlobalShop.dbo.v_order_hist_dtl_Quote
END TRY
BEGIN CATCH
END CATCH
BEGIN TRY
drop table GlobalShop.dbo.v_order_lines_Quote
END TRY
BEGIN CATCH
END CATCH
select * into GlobalShop.dbo.v_order_hist_dtl_Quote
from GlobalShop.dbo.v_order_hist_dtl where isnull(USER_3,'') <> ''
select * into GlobalShop.dbo.v_order_lines_Quote
from GlobalShop.dbo.v_order_lines where isnull(USER_3,'') <> ''
/* Quotes with Orders 1.0 */
select
QT.QuoteNum,
QT.custID,
QT.QCustNum,
QT.QCustName,
QT.QDate,
COUNT(OL.order_no) as #_Open_Orders,
COUNT(OH.order_no) as #_Closed_Orders
from
"Track Quotes".dbo.TrackQuotesHist as QT
left outer join GlobalShop.dbo.v_order_hist_dtl_quote as OH
on QT.QuoteNum = OH.USER_3
left outer join GlobalShop.dbo.v_order_lines_quote as OL
on QT.QuoteNum = OL.USER_3
where
QT.QDate between '03/01/2015' and '03/06/2015'
Group By
QT.QuoteNum,
QT.custID,
QT.QCustNum,
QT.QCustName,
QT.QDate
Да, это было бы отличным кандидатом на хранимую процедуру. Однако у вашего кода два недостатка MAJOR. У вас есть два блока catch, которые пусты. Это ужасная идея. Это НЕ обрабатывает ошибки, они подавляют их. Зачем беспокоиться об ошибке, если вам все равно, случилось это или нет? –
Цель состоит в том, чтобы удалить таблицы, если они есть, а затем создать новые, а затем запустить отчет. Мне не интересно запускать отдельный скрипт, если там нет таблиц, просто продолжайте. –
В этом случае я бы использовал sql в вашей процедуре вместо пустой catch. Это огромный красный флаг, когда вы впервые его видите. Особенно, если ошибка является ошибкой разрешений, остальная часть вашего кода все равно может выйти из строя. –