Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическая компоновка запроса, sp_executeSQL 
:(
    Опции темы
Hohhi
Дата 15.11.2009, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



Здраствуйте! Необходимо написать при помощи хранимой процедуры sp_executeSQL запрос, который будет состоять из столбцов указаных в параметрах и будет работать с таблицей указанной в параметрах, для начала пытаюсь разобраться с заданием трёх столбцов:
Код

USE Formula1
EXEC sp_executeSQL N'
SELECT @FirstColumn, @SecondColumn, @ThirdColumn
From Pilots ', N'@FirstColumn char(7),@SecondColumn char(4),@ThirdColumn char(20), @Table char(6)',
@FirstColumn=Surname,@SecondColumn=Name,@ThirdColumn=ChampionshipTitles,@Table='Pilots'


Результат примерно такой,
Surname    Name    ChampionshipTitles  
Surname    Name    ChampionshipTitles  
Surname    Name    ChampionshipTitles  
Surname    Name    ChampionshipTitles  
.................................................................
Surname    Name    ChampionshipTitles  
Surname    Name    ChampionshipTitles

где количество строк равно числу кортежей в отношении Pilots
PM MAIL ICQ   Вверх
kobra
Дата 16.11.2009, 14:54 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



Код

declare @sql nvarchar(max)
set @sql = 'select ' + @FirstColumn + ', ' + @SecondColumn + ', ' + @ThirdColumn + ' from Pilots' 
EXEC sp_executeSQL @sql

PM MAIL   Вверх
Hohhi
Дата 16.11.2009, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



kobra, как в твоём варианте параметры при вызове задавать?

и почему он такую конструкцию не берёт?
Код

EXEC sp_executeSQL N'
SELECT '+ @FirstColumn+','+ @SecondColumn+','+ @ThirdColumn+'
From Pilots ', N'@FirstColumn char(7),@SecondColumn char(4),@ThirdColumn char(20), @Table char(6)',
@FirstColumn=Surname,@SecondColumn=Name,@ThirdColumn=ChampionshipTitles,@Table='Pilots'

PM MAIL ICQ   Вверх
Deniz
Дата 17.11.2009, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 1
Всего: 44



Hohhi, о каких параметрах идет речь?
Что нужно конкретнее опиши.


--------------------
"Для того чтобы сделать шаг вперед, достаточно пинка сзади" (с)
PM ICQ   Вверх
kobra
Дата 17.11.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



Цитата(Hohhi @  16.11.2009,  19:29 Найти цитируемый пост)
kobra, как в твоём варианте параметры при вызове задавать?
при вызове параметры уже не нужны
Цитата(Hohhi @  16.11.2009,  19:29 Найти цитируемый пост)
и почему он такую конструкцию не берёт?
не умеет и потому smile
PM MAIL   Вверх
Hohhi
Дата 17.11.2009, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



Deniz, опишу конкретнее
Вот пример типажа запроса, который я хочу построить:
Код

EXEC sp_executeSQL N'Select Марка_Автомобиля 
from Автомобили
Where Номер_Двигателя = @Number', 
N'@Number INT', 
@Number = 7;

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


kobra, а если для меня принципиально задавать параметры при вызове)) а не где-то в другом месте.
PM MAIL ICQ   Вверх
kobra
Дата 17.11.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 730
Регистрация: 15.6.2005
Где: Грузия, Тбилиси

Репутация: 5
Всего: 9



Цитата(Hohhi @  17.11.2009,  12:52 Найти цитируемый пост)
kobra, а если для меня принципиально задавать параметры при вызове)) а не где-то в другом месте. 

т.е. чтобы динамически составить запрос, а потом при вызове передать параметры? 
а смысл?
во время составления запроса можно и условия тудаже вписять а потом запустить.
можно иначе: 
динамически создать процедуру или функцию, запустить с нужними параметрами и дропнуть. но зачем такие извращения?
PM MAIL   Вверх
Hohhi
Дата 17.11.2009, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 25.2.2006
Где: Молдова

Репутация: нет
Всего: нет



kobra, это университетское задание, не знаю зачем такие извращения
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.