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

Откуда:
Сообщений: 1684
Есть ли какие-нибудь конструкции, которые позволяли делать примерно следующее:
ALTER FUNCTION fun(@field varchar(100))
RETURNS int
AS
BEGIN
  SELECT id FROM table1
  WHERE @field = 5 --эквивалентно WHERE [IsCUrrent] = 5
END
Структура таблицы - 4 поля, все int
8 авг 11, 13:46    [11085542]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Антохин,

не взлетит

Нет таких конструкций, если CLR-функцию не рассматривать, конечно.
8 авг 11, 13:48    [11085554]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
sp_executesql
8 авг 11, 13:48    [11085558]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Но я думаю, задача решается намного проще без таких фокусов
8 авг 11, 13:49    [11085564]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Антохин
Есть ли какие-нибудь конструкции, которые позволяли делать примерно следующее:
ALTER FUNCTION fun(@field varchar(100))
RETURNS int
AS
BEGIN
  SELECT id FROM table1
  WHERE @field = 5 --эквивалентно WHERE [IsCUrrent] = 5
END
Структура таблицы - 4 поля, все int
Эквивалентно, говорите?
При вызове с @field='5' выберутся все id таблицы table1.
Что же по-Вашему должна вернуть скалярная функция?
При вызове с @field<>'5' не выберется ничего. Где тут эквивалентность?

Это если закрыть глаза на синтаксически неправильный скрипт создания скалярной функции.
8 авг 11, 13:54    [11085607]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
Антохин
Member

Откуда:
Сообщений: 1684
iap
Антохин
Есть ли какие-нибудь конструкции, которые позволяли делать примерно следующее:
ALTER FUNCTION fun(@field varchar(100))
RETURNS int
AS
BEGIN
  SELECT id FROM table1
  WHERE @field = 5 --эквивалентно WHERE [IsCUrrent] = 5
END
Структура таблицы - 4 поля, все int
Эквивалентно, говорите?
При вызове с @field='5' выберутся все id таблицы table1.
Что же по-Вашему должна вернуть скалярная функция?
При вызове с @field<>'5' не выберется ничего. Где тут эквивалентность?

Это если закрыть глаза на синтаксически неправильный скрипт создания скалярной функции.


ALTER FUNCTION fun(@field varchar(100))
RETURNS int
AS
BEGIN
  SELECT TOP 1 id FROM table1
  WHERE @field = 5 --эквивалентно WHERE [IsCUrrent] = 5
  RETURN id
END
да в принципе какая разница как написан запрос, я лишь показал схему работы, как и по какому принципу мне нужно использовать передаваемый параметр как имя поля.
8 авг 11, 13:59    [11085664]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
Антохин
Member

Откуда:
Сообщений: 1684
Geep
sp_executesql

а можно пример?
наверно прочитав мсдн я не особо врубился.
8 авг 11, 14:00    [11085669]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
Антохин
Member

Откуда:
Сообщений: 1684
Антохин
Geep
sp_executesql

а можно пример?
наверно прочитав мсдн я не особо врубился.

без наверно, нечаянно скопипастилось )))
8 авг 11, 14:00    [11085675]     Ответить | Цитировать Сообщить модератору
 Re: Передача имени поля как переменную.  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Антохин,

ну нельзя в T-SQL функции DSQL применять!
Ничего не поделаешь
8 авг 11, 14:06    [11085719]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить