rusqhyazeubebgcahrcsdanlenetfifrglkadeelhuisgaitkkkylvltmknoplptrosrskslessvtrukuz

Использование INSERT...SELECT в динамичных запросах

Больше
7 мес. 6 дн. назад #181 от О.Коровяков
Пример демонстрирует вставку данных при помощи инструкции INSERT из программно созданного SQL-запроса.
-- временная таблица, чтобы было на чем показывать пример
CREATE TABLE Orders (
  OrderID int IDENTITY (1, 1) NOT NULL ,
  CustomerID nchar (5) NULL ,
  EmployeeID int NULL ,
  OrderDate datetime NULL ,
  RequiredDate datetime NULL ,
  ShippedDate datetime NULL ,
  ShipVia int NULL ,
  Freight money NULL DEFAULT (0),
  ShipName nvarchar (40) NULL ,
  ShipAddress nvarchar (60) NULL ,
  ShipCity nvarchar (15) NULL ,
  ShipRegion nvarchar (15) NULL ,
  ShipPostalCode nvarchar (10) NULL ,
  ShipCountry nvarchar (15) NULL
)
GO
 
-- основная часть примера
DECLARE
@schemaname AS NVARCHAR(128),
@tablename  AS NVARCHAR(128),
@colname    AS NVARCHAR(128),
@sql        AS NVARCHAR(805),
@cnt       AS INT;
 
SET @schemaname = N'dbo';
SET @tablename  = N'Orders';
SET @colname    = N'CustomerID';
SET @sql = N'SELECT COUNT(DISTINCT '
+ QUOTENAME(@colname) + N') FROM '
+ QUOTENAME(@schemaname)
+ N'.'
+ QUOTENAME(@tablename)
+ N';';
 
-- создаем временную таблицу, 
-- в нее будут вставлены данных из созданного программно запроса
CREATE TABLE #T(cnt INT);
 
-- собственно, сама вставка данных
INSERT INTO #T
EXEC(@sql);
 
-- вывод, чтобы было видно, что пример работает
SET @cnt = (SELECT cnt FROM #T);
SELECT @cnt;
GO
 
-- удаление временной таблицы
DROP TABLE #T;
GO
 
-- удаление таблицы созданной для примера
drop table orders;
GO

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подпишитесь на наши новости...

Если вам интересны материалы опубликованных на Нашем сайте, Вы можете подписаться на рассылку информационных бюллетеней о новых публикациях ... Просто введите адрес электронной почты на какую Вы хотите получать Новости и нажмите кнопку "Подписаться"

Контакт Инфо

Ok-Wood.
08304 ул.Салютная,c.Гнедын,
Киевская обл, Украина
  • Тел: +39 067 492 41 24
    Tel: +38 095 095 88 60
  • Email: info@ok-wood.com.ua
  • Web: ok-wood.com.ua

Весь процесс строительства описан на страницах сайта, но более подробно о технологии, методах строительства, и всех деталях - Вы можете узнать в книге.