Почему SQL-сервер генерирует хранимые процедуры с помощью sp_executesql оператор со строкой?

использовать объединение с таблицей клиентов и подзапросом

SELECT subquery2.customer_trn, c.customer_name   ,avg(balance) FROM 
  ( 
  SELECT depositor.customer_trn, account.account_number, account.balance FROM 
    account 
      INNER JOIN savings_account ON account.account_number = savings_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 

    UNION ALL 
  SELECT depositor.customer_trn, account.account_number, account.balance FROM 
    account 
      INNER JOIN checking_account ON account.account_number = checking_account.account_number 
      INNER JOIN depositor ON depositor.account_number = account.account_number 
  ) 
  AS subquery2 join customer c on c.customer_trn =subquery2.customer_trn 

GROUP BY subquery2.customer_trn,c.customer_name ;
14
задан Mark 7 May 2009 в 23:55
поделиться

2 ответа

Он не имеет ничего общего с комментариями. Он делает это таким образом, только когда вы говорите «включать, если не существует». Причина в том, что он может программно включать или исключать объекты только в том случае, если они выполняются динамически.

Вы можете отключить хранимые процедуры, выбрав «False» в Options \ SQL Server Object Explorer \ Scripting - Проверка существования объекта.

22
ответ дан 1 December 2019 в 09:13
поделиться

Я предполагаю, что это связано с возможностью создания нескольких sproc в одном файле сценария без GO? Если вы выполняете создание sproc ... напрямую, вам нужно выполнить его пакетно (закончить с помощью GO). При использовании sp_executesql вам не нужно перебирать сгенерированные скрипты между объектами. Хотя я и не помню, может, он там все-таки есть ... (передо мной нет db).

0
ответ дан 1 December 2019 в 09:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: