Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
01.11.2016, 07:40
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Код: sql 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. 31. 32. 33.
нужно добавить в начало условие if select left(current_user, 2) from RDB$DATABASE = 'SM' then Чтобы процедура отрабатывала только если имя пользователя начинается с SM. Пробовал по разному, постоянно получаю ошибку парсера. create or alter procedure GET_LAST_CONNECT returns ( D_STARTED date) as declare variable V_D date; declare variable L_D date; begin if select left(current_user, 2) from RDB$DATABASE = 'SM' then /* ищет в списке коннектов последний по текущему юзеру возвращает время его старта найденный коннект должен быть единственным или отличаться по времени от предпоследнего более чем на 2 секунды иначе вернёт '01.01.1900' как признак что коннект неопределён */ /* по умолчанию считаем что не нашли */ L_D = null; create or alter procedure GET_LAST_CONNECT returns ( D_STARTED date) as declare variable V_D date; declare variable L_D date; begin if begin select left(current_user, 2) from RDB$DATABASE = 'SM' end then create or alter procedure GET_LAST_CONNECT returns ( D_STARTED date) as declare variable V_D date; declare variable L_D date; begin if begin select left(current_user, 2) from RDB$DATABASE = 'SM' end then /* ищет в списке коннектов последний по текущему юзеру возвращает время его старта найденный коннект должен быть единственным или отличаться по времени от предпоследнего более чем на 2 секунды иначе вернёт '01.01.1900' как признак что коннект неопределён */ /* по умолчанию считаем что не нашли */ begin L_D = null; D_STARTED = STRTODATEFMT('dd.mm.yyyy', '01.01.1900');/* преобразование строки в дату с помощью функции StrToDateFmt из Delphi (время не отрабатывает только дату) */ for select MON$TIMESTAMP from MON$ATTACHMENTS where MON$USER = user order by MON$TIMESTAMP desc into :V_D do begin if (L_D is null) then L_D = V_D;/* последний конект */ else begin /* коннект не единственный (сейчас v_d - предпоследний коннект) */ if (L_D - V_D > 0.00003) then D_STARTED = L_D;/* если между последним и предпоследним разница по времени более 2 секунд */ suspend; exit; /* разница в 1-ну секунду = 0,000011574 разница в 2-е секунды = 0,000023148 ... */ end end if (L_D is not null) then D_STARTED = L_D;/* если коннект единственный */ suspend; end end ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 08:09
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Gallemar, if ( (select ...) = 'SM') if (CURRENT_USER starting with 'SM') ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 08:15
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Gallemar, Код: sql 1.
UDF тут не нужна Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 09:52
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Gallemar, ну и до кучи по самой процедуре, кроме уже сказанного: - возможно лучше DATEDIFF вместо констант - L_D и V_D не тип date, а timestamp - возможно (не знаю точно задачи) стоит работать с mon$attachments в автономной транзакции, т.к. мониторинг "запекается" при первом обращении ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 13:07
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Симонов ДенисUDF тут не нужна Да это не мой код, чужая база, в своё время мигрированая с IB, c кучей соответствующего мезозоя ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 18:28
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
afgmGallemar, - L_D и V_D не тип date, а timestamp timestamp есть в первом диалекте? afgm- возможно (не знаю точно задачи) стоит работать с mon$attachments в автономной транзакции, т.к. мониторинг "запекается" при первом обращении "запекается" это как? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 18:51
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Gallemartimestamp есть в первом диалекте?Есть. А почему удивление? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 18:58
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Ivan_Pisarevsky, из источников: TIMESTAMP Этот тип данных доступен только в 3-м диалекте, состоит из двух 32-битных слов и хранит дату со временем. Такое хранение эквивалентно типу DATE 1-го диалекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 19:01
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Hello, Gallemar! You wrote on 1 ноября 2016 г. 19:01:18: Gallemar> /Этот тип данных доступен только в 3-м диалекте/хрень. где взял? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 19:07
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Мимопроходящий, Руководство по языку SQL СУБД Firebird 2.5 20 июля 2016 — v.0469-1 для Firebird 2.5.6 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 19:15
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Gallemarнужно добавить в начало условие if select left(current_user, 2) from RDB$DATABASE = 'SM' как же народу rdb$database припекло. Ну вот за каким фигом тут селект, если можно просто написать if (left(current_user, 2) = 'SM') then ??? И pastor еще более простой вариант привел. p.s. про "народ" я потому, что регулярно вот эту бредятину вижу. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 19:41
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
kdv, готов встать на путь исправления!!! Нашел курсы http://www.ibase.ru/crs_online/, научите меня хорошему!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 19:48
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Gallemartimestamp есть в первом диалекте?В 1-ом диалекте он называется DATE, но содержит и дату, и время ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 19:50
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Gallemar, это надо переписать. TIMESTAMP и DATE полные синонимы в первом диалекте. Оба существуют ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 21:56
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Gallemar "запекается" это как? Описания таблиц мониторинга FB langrefЭти таблицы являются виртуальными в том смысле, что до обращения к ним со стороны пользователя, никаких данных в них не записано. Они заполняются данными только в момент запроса пользователя... Ключевым понятием функции мониторинга является снимок активности. Снимок представляет собой текущее состояние базы данных, содержащее множество информации о самой базе данных, активных соединениях, пользователях, транзакциях, подготовленных и выполняемых запросах и т.д. Снимок создаётся при первой выборке из любой таблице мониторинга и сохраняется до конца текущей транзакции , чтобы запросы к множеству таблиц (например, главная-подчинённая) всегда возвращал непротиворечивые данные. off для Симонова Дениса: из любой таблиц_е_ ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.11.2016, 22:27
|
|||
---|---|---|---|
Подскажите по процедуре |
|||
#18+
Симонов Денис, чудится мне, что до какого-то момента timestamp в 1 диалекте не существовал. Я в том смысле, что в ИБ 6 это вряд ли было. Хотя могу проверить. afgmoff для Симонова Дениса: из любой таблиц_е_ я бы вообще переписал выделенное так: "При первом обращении к любой таблице мониторинга производится снимок активности сервера, записывается во все таблицы мониторинга, и сохраняется в них до конца текущей транзакции. Это сделано для возможности получения консистентной информации при выборке из нескольких взаимосвязанных таблиц мониторинга." Последнее предложение можно поменять на "Это сделано для того, чтобы запросы к множеству таблиц мониторинга (например, главная-подчинённая) всегда возвращал непротиворечивые данные." как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 11:18
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Hello, Kdv! You wrote on 2 ноября 2016 г. 11:17:03: Kdv> чудится мне, что до какого-то момента timestamp в 1 диалекте не существовал.в 1.5 оно точно есть, а ставить IB6.0 лень. хотя, можно же заглянуть в доку от IB6.0 но тоже, лень. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 12:33
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Мимопроходящий, Interbase 6.0 Data Defenition Guide InterBase supports the following datatypes: INTEGER and SMALLINT FLOAT and DOUBLE PRECISION NUMERIC and DECIMAL DATE, TIME, and TIMESTAMP CHARACTER and VARYING CHARACTER BLOB ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 12:41
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Hello, Sonkz! You wrote on 2 ноября 2016 г. 12:38:50: Sonkz> DATE, TIME, and TIMESTAMPнадо смотреть про различия 1 и 3 диалектов. речь идёт о взаимозаменяемости DATE и TIMESTAMP в 1-м диалекте на уровне SQL. (для движка оно понятное дело один хрен) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 12:50
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Мимопроходящий, специально ctrl-f весь pdf прошерстил. Похоже нету там различий на этот счет в 1 и 3 диалектах. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 12:57
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
был ещё Migration Guide, по переходу с 1-го на 3-й диалект. скорее всего там. а может быть в Whats New... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 14:12
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
http://docwiki.embarcadero.com/InterBase/XE7/en/Method_One:_In-place_Migration читаем пункт 5 - получается DATE и TIMESTAMP - В первом диалекте синонимы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 14:14
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Hello, Sonkz! You wrote on 2 ноября 2016 г. 14:12:50: SonkzВ первом диалекте синонимы.так то ж XE7. а мы про 6.0 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.11.2016, 14:33
|
|||
---|---|---|---|
|
|||
Подскажите по процедуре |
|||
#18+
Мимопроходящий, а разве с диалектами что-то менялось? ЕМНИП - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&mobile=1&tid=1561869]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
others: | 290ms |
total: | 440ms |
0 / 0 |