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

Откуда:
Сообщений: 7887
Приветствую!

как возможно сделать в T-SQL что-то типа такого?

create procedure do_report(... ,@name_field ...) 
  as
  ...
  insert into table_report
     (
      ...,
      @name_field, 
      ...) 
    select ...
... 
13 дек 12, 16:55    [13627395]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
kalimba
Member

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

http://msdn.microsoft.com/ru-ru/library/ms188001.aspx
https://www.sql.ru/faq/faq_topic.aspx?fid=104
13 дек 12, 16:58    [13627427]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
AlexandrPlus
Member

Откуда:
Сообщений: 7887
kalimba
AlexandrPlus,

http://msdn.microsoft.com/ru-ru/library/ms188001.aspx
https://www.sql.ru/faq/faq_topic.aspx?fid=104


это - да, так и делал раньше, если надо было
вот так примерно
DECLARE @SQL varchar(8000), @table_name varchar(10)
SET @SQL = 'SELECT * FROM ' + @table_name

exec(@SQL)
--или

exec sp_executesql @SQL


но есть ограничения на длину @SQL
и - можно разбить на части, но и под exec есть ограничения
... исхитрятся - несколько exec и прочее разное (ну и вообще иначе все реализовать)

А другие варианты какие еще?
13 дек 12, 17:09    [13627545]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlexandrPlus
но есть ограничения на длину @SQL

" размер строки ограничен 2 ГБ — максимальным размером типа nvarchar(max)." - не хватает что ли ?
13 дек 12, 17:12    [13627570]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
AlexandrPlus
Member

Откуда:
Сообщений: 7887
Glory
AlexandrPlus
но есть ограничения на длину @SQL

" размер строки ограничен 2 ГБ — максимальным размером типа nvarchar(max)." - не хватает что ли ?


8000 знаковых позиций

да, не хватает

но в общем конечно можно разбивать на части, где меньше 8000
13 дек 12, 17:22    [13627636]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlexandrPlus
8000 знаковых позиций

да, не хватает

но в общем конечно можно разбивать на части, где меньше 8000

nvarchar(max) вообще то 2Гб
13 дек 12, 17:22    [13627644]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
AlexandrPlus
Glory
пропущено...

" размер строки ограничен 2 ГБ — максимальным размером типа nvarchar(max)." - не хватает что ли ?


8000 знаковых позиций

да, не хватает

но в общем конечно можно разбивать на части, где меньше 8000
Еще раз - 2Гб, это не 8000 символов, а гораздо больше.
13 дек 12, 17:23    [13627650]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
поди
Guest
поди сервер 2000
13 дек 12, 17:24    [13627658]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
AlexandrPlus
Member

Откуда:
Сообщений: 7887
Glory
AlexandrPlus
8000 знаковых позиций

да, не хватает

но в общем конечно можно разбивать на части, где меньше 8000

nvarchar(max) вообще то 2Гб


это для 64-разрядных

здесь БД еще под MSSQL 2000

и либо ругается, если больше 4000, либо просто усекает строку
13 дек 12, 17:30    [13627701]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
AlexandrPlus
Glory
пропущено...

nvarchar(max) вообще то 2Гб


это для 64-разрядных
Щито?

AlexandrPlus
здесь БД еще под MSSQL 2000

и либо ругается, если больше 4000, либо просто усекает строку
https://www.sql.ru/forum/afsearch.aspx?s=sp_execresultset&submit=%CD%E0%E9%F2%E8&bid=1
13 дек 12, 17:32    [13627723]     Ответить | Цитировать Сообщить модератору
 Re: Имя поля таблицы в переменную  [new]
Glory
Member

Откуда:
Сообщений: 104751
AlexandrPlus
здесь БД еще под MSSQL 2000

и либо ругается, если больше 4000, либо просто усекает строку

Вот вам хелп от MSSQL 2000
@stmt =] stmt

Is a Unicode string containing a Transact-SQL statement or batch. stmt must be either a Unicode constant or a variable that can be implicitly converted to ntext.

Не надо путать размер вашей переменной с размером параметра sp_executesql
13 дек 12, 17:33    [13627727]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить