Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > переменные вместо явных имен таблиц/полей в SELECT


Автор: LongInt 18.8.2007, 13:52
хм... интересно, но пока в учебниках ничего не нашел, даже как то странно...

Вот, например, мне нужна sp или просто функция, кот. в качестве параметров будет принимать имена таблицы и полей, с которыми необходимо выполнить операции. Насколько я понимаю эти пар-ры/переменные должны быть типа sysname. я прав?
Но вот стопорнуло то меня далее. Как мне использовать эти переменные в конструкции SELECT FROM WHERE ???

Т.е.

Код

--просто для примера
DECLARE @TableName sysname, @FieldName1 sysname, @FieldName2 sysname, @num int
SET @TableName = 'Students'
SET @FieldName1 = 'FIO'
SET @FieldName2 = 'N_3a4etku'
SET @num = 110323767

--Далее надо постороить, например, вот такой простой запрос
SELECT FIO FROM Students WHERE N_3a4etku = 110323767
--но используя переменные а не явные имена....
--КАК?


подскажите smile 

Автор: kobra 18.8.2007, 18:36
Код

DECLARE @TableName sysname, @FieldName1 sysname, @FieldName2 sysname, @num int
SET @TableName = 'Students'
SET @FieldName1 = 'FIO'
SET @FieldName2 = 'N_3a4etku'
SET @num = 110323767

DECLARE @Sql nvarchar(4000)

SET @Sql = 'SELECT ' + @FieldName1 + ' FROM ' + @TableName + ' WHERE ' + @FieldName2 + ' = ' + @num 

EXEC (@Sql)

Автор: LongInt 19.8.2007, 07:26
О. спасибо! smile 
Сейчас нет возможности попробовать....
И тут идет через SET. блин...
А как это тогда использовать в курсоре, например smile 

Код

DECLARE curs CURSOR LOCAL FOR EXEC(@Sql)


такое будет работать?


где бы пр это почитать то? не подскажите, люди?

Автор: LongInt 20.8.2007, 19:40
тупил я вчера после субботы smile 
отдуплил уже все smile 
спс

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)