Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА:

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

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Пример демонстрирует вставку данных при помощи инструкции 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

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

  • Страница:
  • 1
Модераторы: Дмитрий

О сайте

Строительство индивидуальных домов из лёгкого самана - опыт, советы, методика строительства и подробные инструкции. А также возможность применения альтернативных источников энергии.


Контакты

08340. ул.Салютная 17. с.Гнедын.
Киевская обл. Украина.

+38 067 492 4124.
+38 095 065 8860.

info@okwood.com.ua
www.okwood.com.ua

Местоположения


8PM2+7R Гнедин, Kyiv Oblast