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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выполнение функции из строки 
V
    Опции темы
MadCoder
  Дата 1.8.2008, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Здравствуйте!
Задача такая: прочитать из строки название функции, выполнить ее и вывести результат. 
Вот что я накодил:
Код

declare @sql varchar(800)
declare @contr_id varchar(10)
declare @method_name varchar(10)
declare @result varchar(10)
Set @method_name='tree_HavePhones'
Set @contr_id='1'
SET @SQL = 'SELECT * FROM [dbo].['+@method_name+']('+@contr_id+')'
exec(@SQL)
IF @result='1'
print 'Есть телефон'
else
print 'Нет телефона'

Как видно из кода, нужно как-то подгрузить результат EXECUTE (exec) в @result. Почитал тему в sql, не помогло. В продолжении этой темы.

Пожалуйста, помогите smile .

Это сообщение отредактировал(а) MadCoder - 1.8.2008, 14:37
PM WWW ICQ   Вверх
MadCoder
Дата 1.8.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Должно работать подобно этому:
Код

Set @result = dbo.tree_HavePhones(1)
IF @result='1'
print 'Есть телефон'
else
print 'Нет телефона'

PM WWW ICQ   Вверх
SergKO
Дата 4.8.2008, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 231
Регистрация: 14.3.2005

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



Если я правильно понял, то
Код

declare     @sql                        nvarchar(800),
                @contr_id                 nvarchar(10),
                @method_name      nvarchar(100),
                @result                    char(1);

    select     @method_name = 'tree_HavePhones', @contr_id = '1';

    set @sql = N'select @result = dbo.'+@method_name+'(@contr_id)';

    execute sp_executesql @sql, N'@result char(1) out, @contr_id nvarchar(10)',
                    @result                = @result out,
                    @contr_id              = @contr_id;

    if @result = '1'
        print 'Есть телефон';
    else
        print 'Нет телефона';


PM MAIL   Вверх
MadCoder
Дата 4.8.2008, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



То, что доктор прописал! smile Спасибо, SergKO!
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

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

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

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

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

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


 




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


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

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