powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как задать текущее имя схемы в хранимой процедуре.
12 сообщений из 12, страница 1 из 1
Как задать текущее имя схемы в хранимой процедуре.
    #38424500
shurf89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть процедура делающая выборку данных из неких таблиц.
Есть несколько схем содержащих эти таблицы.
В зависимости от параметра нужно чтобы процедура выбирала данные из определённой схемы.

в оракле нашел такое ALTER SESSION SET CURRENT_SCHEMA.

Как это сделать для Adaptive Server Enterprise/12.5.3?
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38424582
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurf89,

Век живи, век учись! С удовольствием и я послушаю!
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38424872
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
примерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create procedure aaaa
    @schema int
as
   create table #rep(...)

   if @schema = 1 
   begin
        insert into #rep select * from table1
        ....
    end else if @schema = 2
   begin
        insert into #rep select * from table2
        ....
    end else begin
        insert into #rep select * from table3
        ....
    end

    update #rep ....
    select * from #rep
go
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38425103
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlпримерно так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
create procedure aaaa
    @schema int
as
   create table #rep(...)

   if @schema = 1 
   begin
        insert into #rep select * from table1
        ....
    end else if @schema = 2
   begin
        insert into #rep select * from table2
        ....
    end else begin
        insert into #rep select * from table3
        ....
    end

    update #rep ....
    select * from #rep
go



Какой хитрый! А где указание схемы где расположены таблицы table1, table2 и table3?
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38425114
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NashvilleКакой хитрый! А где указание схемы где расположены таблицы table1, table2 и table3?С одной стороны - нигде. В ASE нету "схем". Вообще нету.
Но с другой стороны - они там же где и в Oracle: user1.table1, user2.table1 и тд. Только в ASE это называется "владелец таблицы" а не "схема".
Некоторая разница между этими понятиями все-же есть, но очень маленькая и с практической точки зрения ты ее не увидишь еще очень долго.
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38425379
Nashville
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

Ну вот, дал еще один повод Ораклолюбам для гордости:)
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38425533
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurf89, дурость это.
Во-первых так не сделать а почти никак. Во вторых, если сделать, то почти все преимущества хранимых процедур сводятся на нет.

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

А по хорошему надо сливать все бд в одну и после жить долго и счастливо.
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38426153
shurf89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Структура не выбиралась.Остановлюсь на динамическом exec.Как я понял это нужно для каждой схемы создавать одинаковую процедуру а потом просто выбирать с каким use вызывать?
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38426179
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurf89,

Расскажи же, что ты понимаешь под словом "схема" ?

Нет схем в ASE.

Приведи DDL и код процедур.

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

авторОстановлюсь на динамическом exec.Как я понял это нужно для каждой схемы создавать одинаковую процедуру а потом просто выбирать с каким use вызывать?

Ну, можно кстати ещё сделать и так -- создать в каждой БД по процедуре (возможно, текст будет одинаков),
а потом из главной БД вызвать по IF -ам или через EXEC @ уже процедуру из нужной БД.

Если конечно "схема" -- это база данных, а не владелец объекта, как предположил WhiteOwl
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38426439
shurf89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Схема - это БД.
А по поводу бревна это вы зря или просто не попадали в такие ситуации.
Структура сформировалась довольно давно и наверное на то были причины (давно это было).Этой структурой пользуюсь далеко не один я и программный комплекс.Если бы имел возможность всё подогнать под одну задачу так бы и поступил или создал тему соответствующею.

Спасибо за помощь.
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38426774
blzz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
shurf89,

OMFG, какие у вас потребности... можете загонять в переменную dynamic sql делать use, а потом проверять db_name().
есть конечно вариантик типа положить процедуру в sybsystemprocs
с префиксом sp_

вызывать её из нужной базы.

create procedure sp_example_multi_db_proc
as select db_name() as schema_name , name from sysobjects
go
grant execute on sp_example_multi_db_proc to public

use master
go
exec rssd..sp_example_multi_db_proc -- дает список объектов из rssd
go

exec model..sp_example_multi_db_proc -- дает список объектов из model
go

но хз, насколько хорошее это будет решение в продакшоне.
...
Рейтинг: 0 / 0
Как задать текущее имя схемы в хранимой процедуре.
    #38426893
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blzz,

USE делать не нужно, бессмысленно просто.
Можно тупо ссылаться на нужные таблицы или процедуры по полному имени объекта.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Как задать текущее имя схемы в хранимой процедуре.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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