powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
25 сообщений из 110, страница 2 из 5
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539100
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,


ОК,я понял о чем ты... Тогда для иллюстрации могу привести на php.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
 $a=123;     // переменная глобальная и calc() ее "не видит"

 function calc($b)
 {
     global $a;             //<--- собственно что-то среднее между тем, что говорил Денис
                               // USE xxx 
                               // и тем, о чем говорил я:  global.XXXX
     return ($a*$b);
 } 
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539106
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСейчас тоже можно выкрутиться, причём так, что проблем в будущем не возникнет: потребовать обращение к процедурам и функциям пакета всегда (даже внутри пакета) предварять его (пакета) именем.


неудобно
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539115
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterМимопроходящий,


ОК,я понял о чем ты... Тогда для иллюстрации могу привести на php.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
 $a=123;     // переменная глобальная и calc() ее "не видит"

 function calc($b)
 {
     global $a;             //<--- собственно что-то среднее между тем, что говорил Денис
                               // USE xxx 
                               // и тем, о чем говорил я:  global.XXXX
     return ($a*$b);
 } 



php не самый стройный язык. И сделано в нём криво.

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
 $a=123;     // переменная глобальная и calc() ее "не видит"

 function calc($b)
 {
     global $a;             //<--- собственно что-то среднее между тем, что говорил Денис
     $a = 8;                // <-- Ась? Свою переменную (не глобальную) не заведёшь

     return ($a*$b);
 } 

[/quot]
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539121
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисАдриано сказал, что когда будут схемы можно через идентификатор схемы будет обратиться. :-)Адриано сказал, что пока не будет схем и их точной спеки
он нихера не знает, как лучше и ничего делать не будет. :)

Прямо сейчас - предложение ДЕ про "безымянный" префикс типа "::" лично
мне нравится больше всего. Впрочем, я продолжение дискуссии не читал.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539149
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

а её и не было. Я разве что сказал, что текущее поведение надо отразить в документации.

Безымянный префикс - это хорошо, но не с данным синтаксисом. В PSQL :: нигде не используется для разрешения пространств имён.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539160
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Дениснеудобно
Зато полностью решает проблему и не создаёт граблей на будущее.

Прикинь: пакетная процедура вызывает глобальную процедуру А. Пока в пакете нет процедуры
А, она может делать это без префикса. Но вот кто-то изменил пакет, добавив в него
процедуру А и всё, база сломана, она уже не может пересоздаться из скрипта или (если от
хранения BLR таки откажутся) вообще загрузиться. Кому-то такой геморрой нужен?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539170
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Dimitry Sibiryakov!
You wrote on 27 января 2014 г. 15:35:47:

Dimitry Sibiryakov> Кому-то такой геморрой нужен?..
профилактика геморроя, это не только "зашить жопу нитками".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539171
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

+1

...или вывов этой процедуры приведет к порче данных, что еще хуже, ибо получим мусорник, и не факт, что сможем оперативно среагировать. Для баз, в которых около 1К процедур/триггеров, это актуально.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539172
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

пакет создаётся и пересоздаётся целиком, поэтому глобальная процедура тут же пропадёт из области видения пакета. Но тут алгоритм вызывающей процедуры пакета может поломаться. Тут по хорошему предупреждение надо кидать.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539198
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> а её и не было. Я разве что сказал, что
Симонов Денис> текущее поведение надо отразить в документации.

В RN что ли?

Симонов Денис> Безымянный префикс - это хорошо, но не с данным синтаксисом.
Симонов Денис> В PSQL :: нигде не используется для разрешения пространств имён.

Если тебе шашечки - ну пусть будет точка ("."), а
не двойное двоеточие - те же яйца, но в профиль.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539222
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDimitry SibiryakovСейчас тоже можно выкрутиться, причём так, что проблем в будущем не возникнет: потребовать обращение к процедурам и функциям пакета всегда (даже внутри пакета) предварять его (пакета) именем.


неудобноНо пишу же я перед именем поля алиас таблицы, привык уже, даже когда таблица одна.

"Проще штраф заплатить, чем руку сбивать" (с).
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539229
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

может так и лучше. Попробуйте теперь убедить в этом Адриано.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539240
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky> Но пишу же я перед именем поля алиас таблицы,
Ivan_Pisarevsky> привык уже, даже когда таблица одна.

Ты пишешь - это твои проблемы, не все пишут.
А привыкнуть к любой неудобности можно, да.
Ты на Паскале/Си self/this тоже всегда пишешь?
Нет? А почему? Тоже ведь привыкнуть можно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539265
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамА привыкнуть к любой неудобности можно, да.Неудобности не хотелось бы.

Гаджимурадов РустамТы на Паскале/Си self/this тоже всегда пишешь?
Нет? А почему?Не пишу. В паскале явно прописана область видимости переменных и прочего, это еще в школе проходят. Хотя иной раз специально пишу явно имя_модуля.имя_функции, когда в пределах страницы кода идет пачка вызовов из кучи мест, вроде как читаемей выглядит.

Тут похоже разночтение какое-то возникло, может просто доку надо поподробней да почитать повнимательней (мне).
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539268
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может быть лучше как раз наоборот глобальные процедуры вызывать только с префиксом или явно декларировать, что они доступны в пакете. Тогда таких коллизий тоже удастся избежать.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539274
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у оракела нет процедур ВНЕ схем.
почему у нас они должны быть?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539290
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

потому что у нас пока нет схем. И до FB4 теперь наверное не предвидятся.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539298
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 27 января 2014 г. 16:24:22:

Симонов Дениспотому что у нас пока нет схем.
И до FB4 теперь наверное не предвидятся. тогда забить и забыть.
нафиг плодить сЦущности сверх необходимого.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539307
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

FB3 уже на носу (почти перешёл в Бета стадию). Хотелось бы избежать проблем хотя бы в том функционале, который реализовали.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539317
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 27 января 2014 г. 16:31:24:

Симонов Денис> Хотелось бы избежать проблем
1. тебя заставляют юзать пакаджи?
2. тебя заставляют в пакаджах использовать неуникальные идентификаторы?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539337
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий,

> тебя заставляют юзать пакаджи?

хотелось бы. Это очень удобно и сильно упорядочит код.

> тебя заставляют в пакаджах использовать неуникальные идентификаторы?

конечно никто не заставляет, но есть такая штука как человеческий фактор. ДС достаточно хорошо описал проблему которая может возникнуть.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539343
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Симонов Денис!
You wrote on 27 января 2014 г. 16:43:52:

Симонов Денис> хотелось бы. Это очень удобно и сильно упорядочит код.
ерунда это всё. маркетинг.


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539344
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Для обращения к обьектам вне пакета логично всегда писать префикс в виде имени пакета или умолчательного имени пакета для глобальных процедур (global/public/ :: и т.п.).
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539360
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийСимонов Денис> хотелось бы. Это очень удобно и сильно упорядочит код.
ерунда это всё. маркетинг.не, не ерунда. Когда процедур много, и часть из них отвечают за определенный "сектор" бызнес-логики, то действительно хочется их куда-нить затолкать, в "отдельное место".
А пока этого нет, приходится добавлять к ним дурацкие префиксы типа "srv_", "acnt_", "stock_" и прочее. В итоге, еще и меньше знаков (из драгоценных 31) остаются на информ. часть имени.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539363
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

о! А ты чего думаешь по этому поводу?
...
Рейтинг: 0 / 0
25 сообщений из 110, страница 2 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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