Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите написать динамический запрос  [new]
makar182
Member

Откуда:
Сообщений: 36
Добрый день,

Помогите написать динамический запрос. Описание внутри кода в комментариях. У самого не получился - запутался в кавычках и ISNULL-ах :) Заранее спасибо.

CREATE TABLE TEST_TABLE
(
  VAR_1 INT 
  ,VAR_2 INT 
  ,VAR_3 NVARCHAR(255) 
  ,VAR_4 NVARCHAR(255) 
  ,VAR_5 INT 
  ,VAR_6 INT 
  ,VAR_7 INT 
  ,VAR_8 MONEY 
  ,VAR_9 INT 
  ,VAR_10  NVARCHAR(255) 
  ,VAR_11 INT 
  ,VAR_12 BIT
)

INSERT INTO TEST_TABLE
VALUES (1,1,'1','1',1,1,1,1,1,'1',1,1)

/*ДОПУСТИМ У НАС ЕСТЬ ПЕРЕМЕННЫЕ, КОТОРЫЕ МЫ ХОТИМ В ПЕРВУЮ ОЧЕРЕДЬ ЗА'INSERT'ИТЬ В ТАБЛИЦУ TEST_TABLE*/
DECLARE @VAR_1 INT = NULL
DECLARE @VAR_2 INT = NULL
DECLARE @VAR_3 NVARCHAR(255) = NULL
DECLARE @VAR_4 NVARCHAR(255) = NULL
DECLARE @VAR_5 INT = NULL
DECLARE @VAR_6 INT = NULL
DECLARE @VAR_7 INT = NULL
DECLARE @VAR_8 MONEY = NULL
DECLARE @VAR_9 INT = NULL
DECLARE @VAR_10  NVARCHAR(255) = NULL
DECLARE @VAR_11 INT = NULL
DECLARE @VAR_12 BIT = NULL

/*ЗАДАЧА -  Я ХОЧУ ЗА'INSERT'ИТЬ  В ТАБЛИЦУ TEST_TABLE ЗНАЧЕНИЯ ПЕРЕМЕННЫЙ @VAR_1 - @VAR_12. ЕСЛИ КАКАЯ-ТО ПЕРЕМЕННАЯ РАВНА NULL, ТО ТОГДА ИСПОЛЬЗУЕМ ОДНОИМЕННО ПОЛЕ ИЗ ТАБЛИЦЫ TEST_TABLE
Т.Е. БЕЗ ДИНАМИКИ ЭТО ДОЛЖНО ВЫГЛЯДЕТЬ КАК-ТО ТАК 

INSERT INTO TEST_TABLE(VAR_1)
SELECT
  ISNULL(@VAR_1,VAR_1)
FROM TEST_TABLE
WHERE 1=1
*/

/*ТО ЕСТЬ ЕСЛИ ПЕРЕМЕННАЯ ПУСТАЯ (NULL), ТО ЗНАЧЕНИЕ СТОЛБЦА БУДЕТ РАВНО 1*/
17 ноя 15, 15:06    [18429804]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
makar182
Member

Откуда:
Сообщений: 36
Просьба описать динамический код с учетом того, что надо заполнить все столбцы, а не только VAR_1.
17 ноя 15, 15:08    [18429831]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
makar182
Просьба описать динамический код с учетом того, что надо заполнить все столбцы, а не только VAR_1.

А бюджет данного задания какой ?
17 ноя 15, 15:09    [18429837]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
makar182
Member

Откуда:
Сообщений: 36
Glory
makar182
Просьба описать динамический код с учетом того, что надо заполнить все столбцы, а не только VAR_1.

А бюджет данного задания какой ?


Никакой. Просто я не могу понять как правильно написать динамический код, если я пытаюсь в первую очередь завести в столбец переменную, которая может быть и INT и VARCHAR и при этом, по умолчанию, равно NULL.
17 ноя 15, 15:14    [18429874]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
makar182
Просто я не могу понять как правильно написать динамический код,

Руками можно написать правильный код
А можно вообще без динамического кода обойтись.
17 ноя 15, 15:16    [18429897]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
makar182
Member

Откуда:
Сообщений: 36
Glory
makar182
Просто я не могу понять как правильно написать динамический код,

Руками можно написать правильный код
А можно вообще без динамического кода обойтись.


Спасибо за содержательный ответ.
17 ноя 15, 15:19    [18429928]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
makar182
Спасибо за содержательный ответ.

Спасибо за попытку получить халяву.
17 ноя 15, 15:20    [18429932]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
СТУДЕНТ123
Guest
makar182
Просьба описать динамический код с учетом того, что надо заполнить все столбцы, а не только VAR_1.


Странно, может я совсем глуп, но каким образом задача связанна с динамическим SQL, ведь все что нужно заранее известно, или я чего то не догоняю.
17 ноя 15, 16:15    [18430325]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
СТУДЕНТ123
но каким образом задача связанна с динамическим SQL, ведь все что нужно заранее известно, или я чего то не догоняю.

Просто такой "хитрой" постановкой makar182 пытается сыграть на вашем любопытстве и получить готовый скрипт.
17 ноя 15, 16:21    [18430353]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
makar182
Member

Откуда:
Сообщений: 36
СТУДЕНТ123
makar182
Просьба описать динамический код с учетом того, что надо заполнить все столбцы, а не только VAR_1.


Странно, может я совсем глуп, но каким образом задача связанна с динамическим SQL, ведь все что нужно заранее известно, или я чего то не догоняю.


В данном примере динамический SQL не нужен, просто я хотел увидеть на примере данной ситуации как правильно написать синтаксис динамического запроса. Я не стал расписывать всю задачу, для которой мне нужен динамический запрос:)
17 ноя 15, 16:21    [18430354]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
Glory
Member

Откуда:
Сообщений: 104751
makar182
просто я хотел увидеть на примере данной ситуации как правильно написать синтаксис динамического запроса

Синтакис динамического запроса такой же, как у нединамического.
Потому что это все равно TSQL
17 ноя 15, 16:25    [18430381]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
makar182,

все точно также, только кавычки удваиваются.
17 ноя 15, 17:27    [18430791]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
makar182
СТУДЕНТ123
пропущено...


Странно, может я совсем глуп, но каким образом задача связанна с динамическим SQL, ведь все что нужно заранее известно, или я чего то не догоняю.


В данном примере динамический SQL не нужен, просто я хотел увидеть на примере данной ситуации как правильно написать синтаксис динамического запроса. Я не стал расписывать всю задачу, для которой мне нужен динамический запрос:)
Тебе мало в интернете примеров динамических запросов? Че ты людям голову морочишь?
19 ноя 15, 03:44    [18438802]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
makar182
У самого не получился - запутался в кавычках и ISNULL-ах :)
Что то слишком незначительная проблема, что бы просить помощь :-)
Аккуратненько напишите код, что тут сложного?
19 ноя 15, 10:58    [18439582]     Ответить | Цитировать Сообщить модератору
 Re: Помогите написать динамический запрос  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
makar182,

если путаетесь в кавычках, попробуйте вначале не выполнять собранную строку, а вывести ее, скопировать результат и посмотреть его отдельно

declare @strsql nvarchar(max)
declare @var1 nvarchar(10)
set @var1=''

set @strsql='select isnull('''+@var1+''',0),   ...'

select @strsql
19 ноя 15, 11:09    [18439640]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить