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

Откуда: Самара
Сообщений: 47
извиняюсь за второй топик с не умным вопросом...

пытаюсь создать динамический курсор:
  DECLARE @c CURSOR;
  DECLARE @sql_cur VARCHAR(1000);
    
  SET @sql_cur = 'set @curvar= cursor local for 
                      select 
                      c.name
  										from 
											sys.tables t,
											sys.all_columns c
											where t.object_id = c.object_id
											AND lower(t.[name]) = ''' + @from + ''' open @curvar';
  EXEC sp_executesql @sql_cur, '@curvar cursor output ', @curvar=@c OUTPUT;

ругается -
"Error 30.10.2009 15:43:40 0:00:00.046 SQL Server Database Error: Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'. 1 0
"

для курсор?
для того чтобы получить строчку из полей таблицы (стандартная схема не катит, так как таблица может быть любая)

зачем?
хочу сделать аналог "create table as select ", для селекта одной таблицы

зачем?
так как привычка у меня, перед тем, как что-т апдейтить/инсертить/делитить, делать бекап, того что апдейчу/инсерчу/деличу...

...если есть уже готовая конструкция, поделитесь - не буду велосипед изобретать...

...заранее спасибо...

ps
open cursor добавил тока что, без него тоже не работает...
30 окт 09, 14:53    [7862803]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
Glory
Member

Откуда:
Сообщений: 104760
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar

DECLARE @sql_cur VARCHAR(1000)
30 окт 09, 15:01    [7862870]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> зачем?
> хочу сделать аналог "create table as select ", для селекта одной таблицы

select ... into ... from ...

?

Posted via ActualForum NNTP Server 1.4

30 окт 09, 15:01    [7862877]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
Glory
Member

Откуда:
Сообщений: 104760
qas


для курсор?
для того чтобы получить строчку из полей таблицы (стандартная схема не катит, так как таблица может быть любая)

зачем?
хочу сделать аналог "create table as select ", для селекта одной таблицы

зачем?
так как привычка у меня, перед тем, как что-т апдейтить/инсертить/делитить, делать бекап, того что апдейчу/инсерчу/деличу...


А просто select не решает все эти задачи ?
30 окт 09, 15:03    [7862893]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
qas
Member

Откуда: Самара
Сообщений: 47
daw,

спасибо!!!!
30 окт 09, 15:04    [7862909]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
Supra93
Member

Откуда:
Сообщений: 8174
qas

так как привычка у меня, перед тем, как что-т апдейтить/инсертить/делитить, делать бекап, того что апдейчу/инсерчу/деличу...

триггер не спасет отца демократии?
30 окт 09, 15:05    [7862924]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
qas
Member

Откуда: Самара
Сообщений: 47
Supra93, тригеры вешать на все таблицы?...
-думаю не красиво...

а если стандартные логи постоянно пишутся , можно ли возвращать состояние отдельных таблиц, например на час назад?
30 окт 09, 15:11    [7862987]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
Glory
Member

Откуда:
Сообщений: 104760
qas
Supra93, тригеры вешать на все таблицы?...
-думаю не красиво...

Так вы за красотой гонитесь ? Не за функционалом ?
30 окт 09, 15:16    [7863038]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
qas
Member

Откуда: Самара
Сообщений: 47
Glory,


"не красиво" - это значит, что сделано не на должном уровне...

если применительно к этому случаю...
опять я может не знаю, какой-нить особенности, но использовать триггер я воспринял - это писать все изменяемые данные в бекап-таблицы...

иногда это не спасет, если при текущей работе системы идет постоянное изменение таблиц, работающие тригеры убавят производительность...

насколько я понимаю, это же самое делает логирование на сервере...

зачем дублировать ф-л?
30 окт 09, 15:25    [7863109]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1141
qas

иногда это не спасет, если при текущей работе системы идет постоянное изменение таблиц, работающие тригеры убавят производительность...

А курсоры думаете дадут производительность?
30 окт 09, 15:29    [7863140]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
Glory
Member

Откуда:
Сообщений: 104760
qas

насколько я понимаю, это же самое делает логирование на сервере...

зачем дублировать ф-л?

Стандартные бэкапы позволяют вернуть всю базу в состоянии на момент времени
Они не решают задачи
- отмены единичных действий
- протоколирования действия пользователей
30 окт 09, 15:32    [7863162]     Ответить | Цитировать Сообщить модератору
 Re: динамический курсор  [new]
qas
Member

Откуда: Самара
Сообщений: 47
Saller ,
там работает система, а тут мои ручки :)

Glory,
ну ок, теперь я знаю, что логи можно использовать только для полного востановления, к отдельным табличкам это неприменимо....
:)


а так, спасибо ребят...
конструкция select into
это то что мне надо...

просто искал по словам create table, поэтому select into не заметил (а если и заметил бы, то решил бы, что это присваивание параметров...)

еще раз спасибо...
30 окт 09, 15:52    [7863340]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить