powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 Как можно сделать подобие вложенного курсора
10 сообщений из 10, страница 1 из 1
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35829669
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задача примерно такая: Есть несколько баз на сервере! Надо сделать "update all statistics" по всем таблицам во всех базах!

P.S. "update all statistics" взято как пример!!! Но идея примерно такая!
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35829991
_makSim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему подобие? Можно вложенный, я думаю.
Вот скрипт для одной БД:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
use mydb
go

declare c cursor for select name from sysobjects where type='U'
go
declare @n varchar( 30 )
open c
fetch c into @n
while @@sqlstatus= 0  begin
  exec ('update statistics '+@n)
  select @n 
  fetch c into @n
end
close c
go
deallocate cursor c
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830087
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_makSim,

Для одной БД, вопросов нет! а вот как с несколькими сделать?
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830412
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den_makSim,

Для одной БД, вопросов нет! а вот как с несколькими сделать?

можно вообще без курсоров
вот так, но под рукой нет Sybase чтобы проверить:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
create table tempdb..obj (cmd varchar( 255 ))
go
create table #db (name varchar( 50 ))
go
insert into #db(name) 
select name from master..sysdatabases where name not in ('master','model','tempdb','sybsystemprocs')
go
declare @cmd varchar( 255 )
declare @db varchar( 50 )
while exists (select top  1  name from #db)
begin
	select @db=(select top  1  name from #db)
	select @cmd='insert into tempdb..obj(cmd) select ''use '+@db+'; update statistics ''+name+'';'' from '+@db+'..sysobjects where type=''U'''
	exec (@cmd)
	delete #db where name=@db
end
go
create index idx1 on tempdb..obj(cmd)
go
declare @cmd varchar( 255 )
while exists (select top  1  cmd from tempdb..obj)
	begin
		select @cmd=(select top  1  cmd from tempdb..obj)
		exec (@cmd)
		delete tempdb..obj where cmd=@cmd
	end 
go
drop table #db
drop table tempdb..obj
go
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830438
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad, СПАСИБО!!! Дальше разберусь!

Ну а вообще такое как "вложенный курсор" возможно в ASE 12.5(или 15.0.2)
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830448
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Denkomrad, СПАСИБО!!! Дальше разберусь!

Ну а вообще такое как "вложенный курсор" возможно в ASE 12.5(или 15.0.2)
а кто запрещает попробовать?
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830612
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> Задача примерно такая: Есть несколько баз на сервере! Надо сделать
> "update all statistics" по всем таблицам во всех базах!

Открой для себя наконец технологию "прототипирования":

Код: plaintext
1.
2.
3.
select 'select * from '+ name +'
'+'go'
from sysobjects where type = 'U' and name like 'A%'

Код: plaintext
1.
2.
3.
select 'update index statistics on '+ name +'
'+'go'
from sysobjects where type = 'U' and name like 'A%'

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830613
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> Для одной БД, вопросов нет! а вот как с несколькими сделать?

При "прототипировании" -- Всего лишь три раза выполнить "косвенно" результат
вмето двух.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830615
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cherrex_Den пишет:

> Ну а вообще такое как "вложенный курсор" возможно в ASE 12.5(или 15.0.2)
Возможно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 Как можно сделать подобие вложенного курсора
    #35830746
cherrex_Den
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем понял MasterZiv`а, но все равно спасибо!

Собрав все во едино, и курсоры и скрипт komrad`а, цель была достигнута. (komrad`у отдельное спасибо!)

P.S. "select @db=(select top 1 name from #db)" и "while exists (select top 1 name from #db)"
даже в 15.0.2 не прокатывает. Ругается на некоректный синтаксис около top. Хотя в 15.0.2 top уже есть!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 Как можно сделать подобие вложенного курсора
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]