|
|
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
Неужели в ASE 12 нет пользовательских функций? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 17:50 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
Помоемому нет, но что мешает пользоваться хранимыми процедурами с выходными параметрами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 18:01 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
В версии 12.5 такая возможность появилась, но как-то через задницу. Функции надо писать на Java Для этого нужно приобрести лицензию на поддержку Java в в СУБД ( от 960 $ ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2003, 22:05 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
>что мешает пользоваться хранимыми процедурами с выходными параметрами? 1) Нельзя исполнить что-нибудь типа select sp_execute('update statistics ' + so.name) from sysobjects so where so.type= 'U' 2) Нельзя использовать для генерации IDENTITY. И еще десяток применений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.04.2004, 16:47 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
Есть хорошая программа DBArtisan -www.embarcadero.com/downloads/download.html В ней скрипт update statistics для всех таблиц делается нажатием двух клавиш. :) Там же его можно и исполнить. Правда лучше найти DBArtisan 5.4 т.к на www.lomalka.ru для нее есть регистрация, a без нее только месяц работает. Код: plaintext IDENTITY сам создает следующий уникальный номер поля, причем тут функции? А если нужно получить его рукам то процедуре Select @id = IsNull (Max (id), 0) + 1 FROM table получает тот же результат. Какие еще десяток применений? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.05.2004, 11:03 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
Привет. Я, например, написал следующую ХП, которая здорово помогает при update all statistic и прочих reorg rebuild, которые надо применять ко всем объектам базы определенного типа (чаще всего 'U') для ASE 12.0: /******************** sp_dba_table_exec *************************/ --drop proc dbo.sp_dba_table_exec create procedure dbo.sp_dba_table_exec @command varchar(255)=null, @type varchar(5)=null, @time int=null /* @command - команда, которую надо выполнять @type - тип объектов, к которым применять @time - 1-выводить текущее время (нужна ХП sp_dba_datetime) */ as begin if ltrim(rtrim(isnull(@command,'')))='' begin raiserror 40000 'Parameter <@command> do not specify!' return end if ltrim(rtrim(isnull(@type,'')))='' begin raiserror 40000 'Parameter <@type> do not specify!' return end select @time=isnull(@time,0) select name into #tabs from sysobjects where type=@type order by name declare @tab_name varchar(50) declare com_cursor cursor for select name from #tabs for read only open com_cursor fetch com_cursor into @tab_name while @@sqlstatus=0 begin exec(@command+' '+@tab_name) if @time=1 exec sp_dba_datetime fetch com_cursor into @tab_name end close com_cursor deallocate cursor com_cursor drop table #tabs end go grant exec on dbo.sp_dba_table_exec to public go /******************** sp_dba_datetime *************************/ create procedure dbo.sp_dba_datetime as begin declare @date_time varchar(22) select @date_time=(convert(varchar(11), getdate(), 105)+' '+convert(varchar(10), getdate(), 108)) print '********************' print @date_time print '********************' end go grant exec on dbo.sp_dba_datetime to public go ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2004, 11:11 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
Насчет IDENTITY. Представьте себе БД, которая участвует в репликации. Всего в схеме 100 сайтов. Репликация полная, во все направления, за исключением некоторых сводных таблиц и некоторых сервисных процедур, которые по смыслу больше похожи на вьюхи (в том плане, что ничего в БД не делают). Как вы предлагаете обеспечивать уникальность IDENTITY в рамках одной таблицы, если запись может быть сгенерена на любом из сотни сайтов и может оттуда прилететь куда угодно (то есть, она появится везде)? Мсье значет что-то отличное от set identity_insert on/off и ручное заполнение IDENTITY для такого случая? А раз так, то возникает вопрос с генерацией ID. Совсем не реплицировать (=генерить) ID нельзя, так как отношение master/detail и взаимосвязь документов должны сохраняться независимо от сайта, на котором создана запись и на котором к ней добавлены дети. Еще применение - любая проверка бизнеслогики, возвращающая всегда TRUE/FALSE (можно ли модифицировать утвержденный документ, можно ли генерить проводки,...), возвращение какого-нибудь курса валюты на дату (если учесть, что курс может быть задан не для самой валюты, а для ее родительской, и не на эту дату, а на произвольную максимальную меньшую требуемой, причем это зависит от настроек системы, четкий курс брать или нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2004, 13:15 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
И кстати насчет DBArtisan. групповой update all statistics там есть, а вот групповой смены схемы блокировки таблиц там нет. Так что наличие DBArtisan и чего-то в нем - вовсе не аргумент, что функции не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2004, 13:18 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. :) Мсье знает, что некоторые разработчики, когда начинают проект, видят не далее поставленной задачи (1 сайт), а потом начинают на зеркало пенять :) В этой ситуации использовать IDENTITY только проблему наживешь, и вы это лучше меня знаете. А решение - пронумеруйте сайты умножайте по формуле ID / 1000 * 1000 + 1000 + N сайта, примерно так: SELECT @new_id = IsNull (Max (id), 1) / 1000 * 1000 + 1000 + 21 FROM table Код: plaintext 1. 2. 3. Используйте в хранимых процедурах временные таблицы - пару, тройку. CREATE TABLE #name_temp ( ....... ) За несколько действий Вы можете сделать любую выборку. Было бы желание :) Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2004, 16:49 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. См. выше пример ХП, выполняющей групповые действия с таблицами. Ее немного переделать и можно будет и это сделать. Добавить параметр @command2 и в тексте делать не exec(@command+' '+@tab_name) а exec(@command+' '+@tab_name+' '+@command2) После переделки exec dbo.sp_dba_table_exec 'alter table','U',0,'lock datapages' и всего делов-то... 8)) И для генерации ID-шников ХП можно использовать... Хоть и не так изящно, как бы, например функцию, но тоже вполне симпатишно... 8) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 12:23 |
|
||
|
Неужели в ASE 12 нет пользовательских функций?
|
|||
|---|---|---|---|
|
#18+
авторА решение - пронумеруйте сайты умножайте по формуле Так примерно и делается, на основании номера сайта, но это только на клиенте (слава богу, что это унифицировано, то есть, программист может и не знать, когда пишет insert или update, что значение ID сгенерится руками), ибо в такой постановке нельзя исполнить insert .. select . А переписывать сотни процедур, которые вставляют данные, при установке/снятии репликации - это не серьезно. Снятие признака identity с поля ничего принципиально не решает, все равно надо генерить руками значение, зато требует приседаний при установке/снятии репликации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 14:19 |
|
||
|
|

start [/forum/search_topic.php?author=NOTreallySQLguy&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 441ms |
| total: | 711ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...