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

CREATE OR ALTER PROCEDURE PROC1
Код: plsql
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.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
returns (i int)
AS
begin
   i = 5;
   suspend;
end^
 
CREATE OR ALTER PACKAGE PKG2
AS
begin
   procedure proc1
   returns (i int);
end^
 
RECREATE PACKAGE BODY PKG2
AS
begin
   procedure proc1
   returns (i int)
   as
   begin
     i = 3;
     suspend;
     i = 4;
     suspend;
   end
end^
 
CREATE OR ALTER PACKAGE PKG1
AS
begin
   procedure proc1
   returns (i int);
 
   procedure proc2
   returns (name varchar(31), i int);
end^
 
RECREATE PACKAGE BODY PKG1
AS
begin
 
   procedure proc1
   returns (i int)
   as
   begin
     i = 1;
     suspend;
     i = 2;
     suspend;
   end
 
   procedure proc2
   returns (name varchar(31), i int)
   as
   begin
     /* pkg1.proc1 */
     name = 'pkg1.proc1';
     for select i
         from proc1
         into :i
     do
       suspend;
 
     /* pkg2.proc1 */
     name = 'pkg2.proc1';
     for select i
         from pkg2.proc1
         into :i
     do
       suspend;
 
     /* Global proc1 How? */
   end
end^



select *
from pkg1.proc2;

Как внутри процедуры PKG1.proc2 вызвать proc1 из глобального пространства имён? Может быть какое-нибудь ключевое слово ввести или синонимы процедур. Типа вот такого.

USE PROC1 AS GLOB_PROC1 в заголовке пакета. А дальше внутри PKG1.proc2 вызывать PROC1 как GLOB_PROC1. Что думаете?
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38537868
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисЧто думаете?
Да забей. Пакеты на данный момент - просто маркетинговая чушь, Адриано их сделал "чтоб
были", не особо задумываясь над применением.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38537937
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСимонов ДенисЧто думаете?
Да забей. Пакеты на данный момент - просто маркетинговая чушь, Адриано их сделал "чтоб
были", не особо задумываясь над применением.


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

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

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
var
  i: integer;

procedure p1;
var
  i: integer;
begin
  i := 2;
end;



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

UnitName.I не катит?
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38538912
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, DarkMaster!
You wrote on 27 января 2014 г. 13:32:00:

DarkMaster> UnitName.I не катит? ты его видишь?


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

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

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

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

Т.е. я к тому, что или имя пакета, или если его нет - GLOBAL.

Блин, ну вы поняли:
- нет имени пакета - обращаемся к чему-то внутри пакета
- есть имя пакета - обращаемся к другому пакету
- есть GLOBAL - зовем то, что не входит в пакеты
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38538933
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, DarkMaster!
You wrote on 27 января 2014 г. 13:42:08:

DarkMaster> А проверить
Дмитрий, ты ж взрослый мужик.
Шо ж ты ерунду городишь.

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

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

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

Гм.. Ну видимо я чего-то непонимаю:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
var I:integer;  // global

procedure TForm1.Button1Click(Sender: TObject);
var i,                    // local
     N:integer;
begin
  Unit1.I:=1000;     // global
  I:=2;                 // local  
  N:=Unit1.I+I;      // local + global
  ShowMessage(IntToStr(N));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage(IntToStr(I)); // global
end;
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38538956
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

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

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

DarkMaster> Гм.. Ну видимо я чего-то непонимаю:
не понимаешь.
специально для тебя:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
{$APPTYPE CONSOLE}

var
  i: integer;

procedure p1;
var
  i: integer;
begin
  i := 100;
end;

begin
  i := 1;
  p1;
  Writeln(i);
  Writeln('press Enter');
  Readln;
end.



сохрани как dpr и запусти на выполнение.

где у тебя (у меня) тут требуемое имя модуля для подстановки?


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

где у тебя (у меня) тут требуемое имя модуля для подстановки?




а у dpr что, нету имени?
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539040
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Tactical Nuclear Penguin!
You wrote on 27 января 2014 г. 14:33:57:

Tactical Nuclear Penguin> а у dpr что, нету имени?
ты код компилировал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539041
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисАдриано сказал, что когда будут схемы можно через идентификатор схемы
будет обратиться. :-)
На что ты же и ответил, что тогда будет ещё больший геморрой с пакетами, имеющими то же
имя что и схема. И опять выползет та же синтаксическая проблема с вызовом процедур без
префиксов: вызывать её из пакета, текущей схемы или откуда-то ещё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539044
Tactical Nuclear Penguin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МимопроходящийHello, Tactical Nuclear Penguin!
You wrote on 27 января 2014 г. 14:33:57:

Tactical Nuclear Penguin> а у dpr что, нету имени?
ты код компилировал?


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
program Project1;
{$APPTYPE CONSOLE}
var
  i: integer;

procedure p1;
var
  i: integer;
begin
  project1.i := 100;
end;
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539048
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Tactical Nuclear Penguin!
You wrote on 27 января 2014 г. 14:36:28:

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

там можно выкрутиться. Например в PostgreSQL сделали схему по-умолчанию с именем public. И вообще вне схемы ничего не создаётся
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539096
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денистам можно выкрутиться.
Сейчас тоже можно выкрутиться, причём так, что проблем в будущем не возникнет: потребовать
обращение к процедурам и функциям пакета всегда (даже внутри пакета) предварять его
(пакета) именем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (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
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539367
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В именах таблиц/колонок драгоценные тридцать один знак расходуют, в том числе, и на префиксы/суффиксы.
Придерживаться аналогичной стратегии для имён процедур - выглядит вполне логичным, раз уж полноценная реализация отложилась.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539373
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Таблоид!
You wrote on 27 января 2014 г. 16:56:31:

Таблоид> не, не ерунда. Когда процедур много...
"изоляцией" занимается инструмент.
(в данном случае - IBExpert)

зы: сейчас процедур в базе порядка 2 тысяч.

ззы: пакаджи были придуманы не для этого.

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

пакадж - модуль (как в Pascal unit). Удобней располагать близкие по функционалу процедуры/функции в одном модуле, чем все процедуры/функции в глобальном пространстве. Единственное что мне кажется странным, так это то, что права на пакет даются только целиком.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539397
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис ты чего думаешь по этому поводу?при обнаружении внутри пакета конструкции типа execute procedure some_proc первой должна искаться ХП в этом пакете. Если её нет, то standalone-процедура. Но компиляция пакета должна обязательно сопровождаться предупреждением о наличии совпадающих имён. ИМХО.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539402
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Ну так давайте придерживаться областей видимости, как в Паскале:
- мы внутри пакета - все обращения к соседям (тем объектам, которые тоже в пакете) - без префикса.
- мы внутри пакета - все обращения к другим пакетам - через префикс в виде имени пакета
- мы внутри пакета - все обращения к глобальным обьектам - через обязательное указание умолчательного префикса
- если мы в области глобальных обьектов - это фактически то же самое, как если бы мы были внутри предопределенного пакета (т.е. все глобальные обьеты по умолчанию должны создаваться внутри предопределенного пакета).

Т.е. фактически требуется выделение дополнительного умолчательного префикса для обращения к глобальным обьектам.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539407
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийзы: сейчас процедур в базе порядка 2 тысяч.дык у нас еще 3-4 года взад было 2400. И нагородили бы еще больше, если бы нас подло не остановило начальство своим решением о переводе на 1с
Мимопроходящийззы: пакаджи были придуманы не для этого.в орацле почему-то думкают иначе: там на первом месте именно модульность указана http://docs.oracle.com/cd/B10500_01/appdev.920/a96624/09_packs.htm#401 Modularity

Packages let you encapsulate logically related types, items, and subprograms in a named PL/SQL module.Дураки, наверное.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539427
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hello, Таблоид!
You wrote on 27 января 2014 г. 17:18:56:

Таблоидв орацле почему-то думкают иначе: там на первом месте именно модульность
указана
Дураки, наверное.
маркетологи.

зы: у оракела ЯЗЫК изначально модульный.
ззы: и может "существовать" даже в отрыве от сервера.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539433
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

Они не указывают, что это свойство самое важное, не придумывай, чего нет.
Может, они "по нарастанию важности" перечислили. Ведь последнее, "better performance", явно не самое фуфловое из перечисленного, как думаешь?
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539436
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> И до FB4 теперь наверное не предвидятся.

Версионность после тройки уже объявлена что ли?

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

Разве схемы не потребуют изменения ODS, подсистемы прав и серьезного допиливания парсера?
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539470
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не только этого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539471
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSeryпоследнее, "better performance", явно не самое фуфловое из перечисленного, как думаешь?Не прочувствовали мы как-то его. Я именно про "later calls to related subprograms in the package require no disk I/O". Тормоза от *вызовов* standalone-процедур там - ничтожные. А вот если там внутри нет биндинга аргументов - оооо.... это песня просто будет :-)
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539472
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

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

Я бы не зарекался.

P.S. Можно в 3.1, буде ему статься.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539484
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисможет быть лучше как раз наоборот глобальные процедуры вызывать только
с префиксом или явно декларировать, что они доступны в пакете.
Синтаксическая несуразность получится. В обычной процедуре ты пишешь
Код: sql
1.
2.
StandAloneProc();
Package.PackageProc();


В пакетной процедуре - наоборот:
Код: sql
1.
2.
Global.StandAloneProc();
PackageProc();


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

дык в пойнт релизах ODS так сильно не меняют. То что схем не будет в FB3 уже вроде говорилось.

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

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

FB3 - это FB 3.0.* или кто?

> Кстати причём тут версионность?

Ну я пока не знал, что после FB3 пойдёт FB4.
Лично для меня это откровение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539498
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрим что ДЕ и ВХ скажут по поводу глобальных процедур внутри пакетов. Когда я эту тему начинал, то даже как-то о таких проблемах и не задумывался. Сначала просто показалось нелогичным невозможность вызова одноимённой глобальной процедуры. А тут ещё оказывается и множество подводных камней.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539503
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

а я этого и не говорил.

Гаджимурадов РустамFB3 - это FB 3.0.* или кто?

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

Моя шляпа глубока и полна волшебства. В ней носовые платки, кролики и девчёнки выпивающие Black Label, и ещё в ней есть дым-машины, пена-машины и даже торч-машины, и всё равно, до дна шляпы далеко… Но в ней НЕТ ни грамма сухого льда СХЕМ! (с) :-)
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539580
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> Моя шляпа

А вот это ты зря, зря.

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

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

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

что скажешь насчёт

Dimitry SibiryakovПрикинь: пакетная процедура вызывает глобальную процедуру А. Пока в пакете нет процедуры
А, она может делать это без префикса. Но вот кто-то изменил пакет, добавив в него
процедуру А и всё, база сломана, она уже не может пересоздаться из скрипта или (если от
хранения BLR таки откажутся) вообще загрузиться. Кому-то такой геморрой нужен?..
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539598
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамНе, ДЕ намекает, что ресурсы ограничены и в шляпе
запасных нет. Ну нет, так нет, это дело хозяйское...
нет, ДЕ просто взрывается сарказмом когда видит фразу "выпроси у ДЕ" :-)
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539601
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> достать схемы из волшебной шляпы можно будет
dimitr> только осле того, как в оную шляпу что-то положат

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

Dimitry SibiryakovПрикинь: пакетная процедура вызывает глобальную процедуру А. Пока в пакете нет процедуры
А, она может делать это без префикса. Но вот кто-то изменил пакет, добавив в него
процедуру А и всё, база сломана, она уже не может пересоздаться из скрипта или (если от
хранения BLR таки откажутся) вообще загрузиться. Кому-то такой геморрой нужен?..

добавили в пакет процедуру А - все работает как работало (т.к. в BLR) сидит вызов глобальной А. Пересоздали из скрипта - все ОК, но в BLR будет прописан вызов уже пакетной процедуры А. Неприятно, но подобное уже обсуждалось - с одноименными UDF/SDF. Почему "база сломана" - моя не понимай.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539617
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

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

Если сигнатура отличается - таки сломается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539624
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПрикинь: пакетная процедура вызывает глобальную процедуру А. Пока в пакете нет процедуры
А, она может делать это без префикса. Но вот кто-то изменил пакет, добавив в него
процедуру А иЛибо сигнатура пакетной А совместима с глобальной - и тогда пакет спокойно скомпилируется.
Либо сигнатура пакетной А другая - и тогда пакет не скомпилируется.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539677
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЛибо сигнатура пакетной А другая - и тогда пакет не скомпилируется.
Вот именно. И валидный ранее скрипт "вдруг" начнёт выдавать ошибку в месте, которое сто
лет никто не трогал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539813
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladЛибо сигнатура пакетной А другая - и тогда пакет не скомпилируется.
Вот именно. И валидный ранее скрипт "вдруг" начнёт выдавать ошибку в месте, которое сто
лет никто не трогал.Какой скрипт ??? С новым пакетом ?
И где тут "база сломана" ?
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539824
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladИ где тут "база сломана" ?
Так вы уже передумали избавляться от хранения BLR?.. Если нет - то и база.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38539828
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

продолжай говорить сам с собой
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557507
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то захотелось ещё пофлудить про пакеты...
Симонов ДенисПакеты очень удобная фича для группировки процедур и функция
выполняющих действия над одним бизнес объектом. Например счёт.
Группировка процедур это, конечно, хорошо, но процедуры сами по себе не слишком полезны:
они работают с таблицами. И стало быть ещё лучше было бы группировать и таблицы. А таблицы
не группируются в пакеты, они группируются в схемы. Но ведь и процедуры тоже группируются
в схемы. Отсюда возникает логичный вывод: если сделать схемы, пакеты становятся пятым
колесом. Т.е. они просто такая затычка пока нет схем.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557511
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

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

P.S. Делать схему "для группировки" - это пять.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557521
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovтаблицы не группируются в пакеты, они группируются в схемы. Но ведь и процедуры тоже группируются в схемы.Только самое главное - не создавать непременно db-user'a под каждую схему (как в орацле делается).
То есть, вот из этого определения:5CD2-02-Foundation-2006-01.pdf, page 575
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 Format 
<schema definition> ::=
CREATE SCHEMA < schema name clause >
    [ <schema character set or path> ]
    [ <schema element>... ]
<schema character set or path> ::=
<schema character set specification>
| <schema path specification>
| <schema character set specification> <schema path specification>
| <schema path specification> <schema character set specification>
< schema name clause > ::=
 <schema name> 
| AUTHORIZATION <schema authorization identifier>
| <schema name> AUTHORIZATION <schema authorization identifier>
<schema authorization identifier> ::=
<authorization identifier>
- хотелось бы иметь возможность сбацать схему простым вводом:
Код: sql
1.
create schema inventory;

- без указания AUTHORIZATION и без предварительного создания db-user'а с именем 'inventory'.

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

пакеты это не просто группировка ХП. Считай их аналогом модулей в Pascal - unit. Поскольку есть интерфейсная часть (заголовок) и реализация (тело), то можно часть реализации сделать приватной. Т.е. сделать часть процедур/функций невидимых вне пакета. Кроме того, права назначаются на весь пакет в целом, т.е. на всё сразу. В этом есть и минусы конечно, т.к. если нужно будет разграничить доступ на отдельные процедуры пакета, то придётся делать это на уровне PSQL дополнительно.

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

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

по поводу схем. Моё ИХМО схемы - это уже больше похоже на БД почти полностью логически независимую. Одна схема в другую должна обращаться довольно редко, хотя и это гораздо проще чем EXECUTE STATEMENT ON EXTERNAL... FK между таблицами разных схем - это уже верх изврата.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557612
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrэто, пожалуй, не самое каноническое применение схем :-)
А у схем есть какое-то применение кроме группировки объектов БД?.. Вот
тут ,
например, это называется в качестве единственного плюса от их использования (включая
выдачу прав на всю схему разом, чем они не отличаются от вышеописанных пакетов).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557678
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

есть большая разница между группировкой сильносвязанных и слабосвязанных (или даже абсолютно независимых) объектов. IMHO, схемы - исключительно для второго.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557682
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисМоё ИХМО схемы - это уже больше похоже на БД почти полностью логически независимую. Одна схема в другую должна обращаться довольно редко, хотя и это гораздо проще чем EXECUTE STATEMENT ON EXTERNAL... FK между таблицами разных схем - это уже верх изврата.
и я, и я, и я того же мнения (с) А зачастую не просто "похоже на БД", а реально логически разные БД объединены в одну физическую БД.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557692
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrА зачастую не просто "похоже на БД", а реально логически разные БД объединены в одну физическую БД.
С парой-тройкой общих справочников :)
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557702
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrесть большая разница между группировкой сильносвязанных и слабосвязанных (или
даже абсолютно независимых) объектов. IMHO, схемы - исключительно для второго.
А пакеты, стало быть, для первого. Тогда в них должны попадать и сильносвязанные с ними
таблицы, нет?..

Кстати: в чём измеряется сила связи объектов? Чтобы можно было посчитать и сказать: "у
этих двух объектов сила связи 100500, они сильно связанные, их нужно в один пакет, а у
этих - 100499, они связаны так себе, их в пакет не нужно, достаточно схемы".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557715
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickDeeС парой-тройкой общих справочников :)
или без них :-)

Dimitry Sibiryakovв чём измеряется сила связи объектов?
здравым смыслом и/или внешними факторами. Если у тебя система не самодостаточна без мааааленькой схемы с объектами расчета себестоимости (прикрученной проволокой к штатной бухгалтерии) - это одно, а если ты слил две независимые БД в одну и написал служебную процедуру по перекачке данных из одной схемы в другую - это совсем другое.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557718
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovв чём измеряется сила связи объектов?
PS: Я не прикалываюсь, а действительно пытаюсь определить стоит мне куда-то прикручивать
пакеты или в своём первом посте я был прав.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557739
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> Меня задолбало в Оракле когда я в TOAD копаюсь
Симонов Денис> отыскивать реально схему среди сотен юзеров.

Да ладно, на деле сотен схем не бывают.
А к трем-четырем быстро привыкаешь
и ориентируешься.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557740
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, про сильную и слабую связность это он сильно задвинул, конечно. :)
Схемы для разных целей могут использоваться - например, иметь почти
одинаковые структуры для разного наполнения (а-ля белый и чёрный учёт)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557755
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrздравым смыслом и/или внешними факторами. Если у тебя система не
самодостаточна без мааааленькой схемы с объектами расчета себестоимости (прикрученной
проволокой к штатной бухгалтерии) - это одно, а если ты слил две независимые БД в одну и
написал служебную процедуру по перекачке данных из одной схемы в другую - это совсем
другое.
Тогда будем говорить предметно: вот есть у меня конфигурация репликации - несколько
таблиц, где, собственно, хранятся данные и (предположим) набор ХП для её изменения,
управления и т.п. Сейчас всё это барахло лежит в отдельной БД, но я хочу запихнуть его
непосредственно в реплицируемую БД. Процедуры я, конечно, могу сложить в пакет, но без
таблиц они не имеют смысла. А таблицы в пакет не положишь. И при этом они весьма слабо
связаны с пользовательскими чтобы валяться между ними. Т.е. лично мне идеально подошла бы
отдельная схема. Но тогда и всплывает вопрос "зачем пакеты, когда есть схемы". Что такого
я могу сделать с пакетом, чего не получится со схемой?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557757
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамДа ладно, на деле сотен схем не бывают.
А к трем-четырем быстро привыкаешь и ориентируешься.
с десятком схем работал лично - жить можно, но больше уже пожалуй будет не очень комфортно

Гаджимурадов РустамСхемы для разных целей могут использоваться - например, иметь почти
одинаковые структуры для разного наполнения (а-ля белый и чёрный учёт)
или development и production одной и той же базы. Могут для разного, конечно же. Вопрос нужно ли, поэтому см. выше про здравый смысл. Лично мне это видится через призму связанности, но спорить не буду.
...
Рейтинг: 0 / 0
Вызов одноимённых процедур из глобального пространства внутри пакета (FB3)
    #38557770
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТогда будем говорить предметно: вот есть у меня конфигурация репликации - несколько
таблиц, где, собственно, хранятся данные и (предположим) набор ХП для её изменения,
управления и т.п. Сейчас всё это барахло лежит в отдельной БД, но я хочу запихнуть его
непосредственно в реплицируемую БД. Процедуры я, конечно, могу сложить в пакет, но без
таблиц они не имеют смысла. А таблицы в пакет не положишь. И при этом они весьма слабо
связаны с пользовательскими чтобы валяться между ними. Т.е. лично мне идеально подошла бы
отдельная схема. Но тогда и всплывает вопрос "зачем пакеты, когда есть схемы". Что такого
я могу сделать с пакетом, чего не получится со схемой?..

ключевая фраза - "сейчас лежит в отдельной БД". Т.е. к базе юзера твои настройки репликации относятся чисто логически и база без них спокойно продолжит свое существование. Поэтому мой ответ - отдельная схема. Но можно зайти и с другой стороны - если у клиента несколько реплицируемых баз, то у тебя конфигурационных баз тоже несколько или все же одна? Если первое, то IMHO это скорее недостаток проектирования. Но если без этого никак, тогда придется включать объекты в юзерскую схему. Иначе опять же напрашивается отдельная схема.

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

Угу.

> или development и production одной и той же базы

Ну, это имхо плохое решение. Девелопмент на мой
взгляд должен быть не только в отдельной БД, но и
на отдельном сервере. Но запретить, конечно, нельзя.

> Лично мне это видится через призму связанности, но спорить не буду.

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

Да ладно, на деле сотен схем не бывают.
А к трем-четырем быстро привыкаешь
и ориентируешься.


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

Легко-то легко, хотя польза и практический смысл этого сомниетелен.
Тем не менее схемы не совсем то же самое, что и пользователи, даже
в Оракле (если не брать во внимание пустые схемы). Так что сотню
именно схем (настоящих) увидеть вряд ли доведётся..

> Вот я и говорю так делать схемы не надо.

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

я ничего не знаю о планах реализации схем и их концепциях в FB.

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


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