powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД для учета финансовых потоков?
25 сообщений из 180, страница 4 из 8
СУБД для учета финансовых потоков?
    #34131667
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAИли что-то другое ?
Я бы делал примерно так:

Код: plaintext
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.
SQL> create procedure get_cursor ( p_schema varchar2,
   2                                 result out sys_refcursor ) is
   3   begin
   4     open result for
   5       select object_type, count(*) cnt
   6       from dba_objects
   7       where owner = p_schema
   8       group by object_type ;
   9   end ;
  10   /

SQL> exec get_cursor ( 'SYSTEM', :result ) ;

PL/SQL procedure successfully completed.

OBJECT_TYPE                CNT
------------------- ----------
FUNCTION                      1 
INDEX                       171 
INDEX PARTITION              31 
LOB                          24 
PACKAGE                       1 
PACKAGE BODY                  1 
PROCEDURE                     1 
QUEUE                         4 
SEQUENCE                     20 
SYNONYM                       8 
TABLE                       137 
TABLE PARTITION              27 
TRIGGER                       2 
TYPE                          1 
VIEW                         10 

 15  rows selected.
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34131693
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Председатель Маотем что вы не можете сделать такое
create Procedure p_ec_pays( @id int)
Кстати, не покажете ли, как Вы сделаете такое:

Код: plaintext
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.
76.
77.
78.
79.
80.
81.
SQL> conn sys@svintus as sysdba

Connected.

SQL> create user t_app identified by t_app default tablespace users ;

User created.

SQL> create user t_user identified by t_user ;

User created.

SQL> grant connect to t_user ;

Grant succeeded.

SQL> grant connect, resource, unlimited tablespace to t_app ;

Grant succeeded.

SQL> conn t_app/t_app@svintus

Connected.

SQL> create table my_objects as
   2     select object_id, object_name, object_type from user_objects 
   3     where rownum <  1  ;

Table created.

SQL> create procedure get_objects ( result out sys_refcursor,
   2                                  filter varchar2 default null ) as
   3   begin
   4     open result for
   5       'select * from my_objects where rownum <= 5 ' ||
   6       case when filter is null then null else 'and ' || filter end ;
   7   end ;
   8   /

Procedure created.

SQL> create view my_objects_view as select * from my_objects ;

View created.

SQL> insert into my_objects
   2     select object_id, object_name, object_type from user_objects ;

 3  rows created.

SQL> grant execute on get_objects to t_user ;

Grant succeeded.

SQL> conn t_user/t_user@svintus

Connected.

SQL> exec t_app.get_objects ( :result ) ;

PL/SQL procedure successfully completed.

 OBJECT_ID OBJECT_NAME                    OBJECT_TYPE                           
---------- ------------------------------ -------------------                   
      68451  MY_OBJECTS_VIEW                VIEW                                  
      68448  GET_OBJECTS                    PROCEDURE                             
      68449  MY_OBJECTS                     TABLE                                 

SQL> exec t_app.get_objects ( :result, 'object_type = ''VIEW''' ) ;

PL/SQL procedure successfully completed.

 OBJECT_ID OBJECT_NAME                    OBJECT_TYPE                           
---------- ------------------------------ -------------------                   
      68451  MY_OBJECTS_VIEW                VIEW                                  

SQL> select * from t_app.my_objects ;
select * from t_app.my_objects 
                    *
ERROR at line  1 :
ORA- 00942 : table or view does not exist 
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34131699
OS/360
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarer ChA"Нормально" - это как
"Нормально" - это возвращать сколько угодно выборок каждую через свой именованный out параметр, а не в виде одной кучи, индексы в которой слетают от каждого чиха.

про кучу - понятно, индексы то причём?
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34131705
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OS/360про кучу - понятно, индексы то причём?
Ээ... "индексы" - не в смысле "объекты БД", а в смысле "порядковый номер в массиве возвращаемых рекордсетов". Это в сторону команды set nocount on, если мне не изменяет память.
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34131712
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer Это в сторону команды set nocount on, если мне не изменяет память.
Глюки с NOCOUNT - это тоже один из любимейших вопросов на профильном форуме.

До кучи - скалярные OUTPUT параметры можно получить только выбрав предварительно табличные результаты. TDS так устроен. Tabulated Data Stearm
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34131762
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Di_LIne Anton Demidov ИзопропилИ отчего люди так Оракла боятся? Конкркетно, что сложного в администрировании? Это миф, бережно поддерживаемый конкурентами.
... и плюс 8 томов "Справочник администратора Оракла"...Вот про это я и говорю - где вы видели эти 8 томов? Сделайте поиск на том же Озоне, в конце концов.

Прежде чем судить о сложности администрирования, поставьте себе Oracle XE, посмотрите на его web интерфейс - многие заблуждения развеются как дым.

Для полноценных версий есть курс "2 Day DBA" - это вполне по силам каждому заинтересованному.
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34131867
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советую реализовывать на том, что знаешь, и думать в первую очередь о проектировании модели данных, идеологии написании ХП, репликации (если 50 филиалов).
А имея 3-х летний опыт писанины АИС на базе СУБД Oracle, скажу, что при реализация финансового учёта каких-то специфичных, с точки зрения технологии, проблем не возникало.
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34131912
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer"Нормально" - это возвращать сколько угодно выборок каждую через свой именованный out параметр, а не в виде одной кучиДопустим. Но этот механизм будет работать только через OCI, но не через ODBC, разве не так ?
softwarerиндексы в которой слетают от каждого чиха.Простуда здесь не при чем, результаты возвращаются по мере их выдачи сервером. Возврат значений счетчика обработанных записей последней командой тоже входит в их число, что действительно становится проблемой для новичков, особенно, когда они начинают работать с множественными результатами, не умея этого делать правильно. На практике NOCOUNT, как правило, устанавливается в ON, так как возвращаемое значение просто не нужно, тем более, что получить его можно и другими способами. Более того, оно просто вредно, так как посылается практически после каждого выполняемого оператора DML, забивая сеть ненужными пакетами. Лично я склонен считать эту возможность анахронизмом, наследием Sybase, хотя, в исключительно редких случаях, и полезным при отладке скрипта в QA, так как просто лень писать
Код: plaintext
PRINT @@ROWCOUNT
.

* В принципе, наверное, действительно можно считать недостатком, что протокол TDS поддерживает только синхронную передачу данных - "вопрос - ответ". Но если правильно помню, то стандарт ODBC не поддерживает асинхронной передачи данных, так что все в рамках стандартов :)
** Хотя в 2005 и была введена какая-то поддержка такой возможности(MARS), но, по отзывам, как то не очень убедительно, не говоря уж о практической пользе, которая мне, например, вообще неочевидна. Тем более, что в Oracle, насколько понимаю, главное не множественные результаты, как таковые, но множество независимых и одновременно открытых курсоров. А это уже совсем другая цель и, естественно, механизм, протокол и, разумеется, свой native API.
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132035
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChAДопустим. Но этот механизм будет работать только через OCI, но не через ODBC, разве не так ?
Нет, не так. Точнее, я не имею личного опыта - не вижу никакого смысла использовать ODBC - но кого-то из спрашиваюших лично посылал в статью, где расписывалось, как использовать эту фичу через ODBC.

ChAПростуда здесь не при чем,
Простуда здесь вызвана тем фактом, что клиентский код начинает неоправданно зависеть от реализации серверного.

ChAНо если правильно помню, то стандарт ODBC не поддерживает
Тем хуже для него. Я не понимаю, какой смысл кивать на кривой и мертвый стандарт и гордиться наследованием его глупостей.

Резюмируя: по сравнению с MSSQL, в Oracle для записи того же требуется одна лишняя строка (open for select вместо просто select). Этим мы покупаем именованные параметры-рекордсеты и возможность легко крутить выборки так, как нам удобно, в частности передавать их между подпрограммами и использовать на сервере. Собственно, как мы недавно установили, существует возможность взять на клиенте out-курсор, выданный одной ХП и передать его параметром на вход вызываемой с клиента другой ХП - конечно, это есть изврат, но показывает возможности механизма.

Что касается второго из приведенных мной примеров, то подозреваю ответа на него я не дождусь :)
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132216
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andreww SergSuper а в Оракле в функции можно побочный эффект сделать? т.е. сделать изменения в каких-то таблицах

Конечно. А В MSSQL-e разве нет ? Где же тут "ЖОПА"-то ?

В MSSQL-e функция не может менять таблицы, можно делать модификации, только процедура.

А что будет есть функция меняет таблицу и выдаёт данные из неё же?

С передачей выборки через параметр в MSSQL-e действительно плохо.
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132259
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperА что будет есть функция меняет таблицу и выдаёт данные из неё же?
Если хотите простой ответ, то ничего не будет, в смысле выборка будет построена над снапшотом на момент запроса. Если сложный ответ - надо лезть в Oracle Concepts, читать про согласованное чтение. Например если на уровне read committed из запроса вызывается функция, которая в свою очередь делает запрос, то эти два запроса не будут взаимосогласованы (основной запрос изменений не увидит, запрос в функции увидит).

Впрочем, на практике такие задачи (модифицировать читаемую таблицу) вряд ли встречаются. Побочный эффект функций применяется для более мягких вещей, например для аудита (залогировать, кто и когда запрашивал вот такую строку данных).
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132278
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer , спасибо, понял

а что имелось в виду
softwarerЧто касается второго из приведенных мной примеров, то подозреваю ответа на него я не дождусь :)
Я чесно говоря не понял что там делается. Динамический запрос или еще что?
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132333
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperЯ чесно говоря не понял что там делается. Динамический запрос или еще что?
Динамический запрос, но с одной важной деталью:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
-- пользователь t_user через процедуру читает таблицу t_app.my_objects

SQL> exec t_app.get_objects ( :result, 'object_type = ''VIEW''' ) ;

PL/SQL procedure successfully completed.

 OBJECT_ID OBJECT_NAME                    OBJECT_TYPE                           
---------- ------------------------------ -------------------                   
      68451  MY_OBJECTS_VIEW                VIEW                                  


Код: plaintext
1.
2.
3.
4.
5.
6.
-- пользователь t_user обламывается на попытке читать таблицу напрямую

SQL> select * from t_app.my_objects ;
select * from t_app.my_objects 
                    *
ERROR at line  1 :
ORA- 00942 : table or view does not exist 
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132375
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2000 такого не сделать, а в 2005 по-моему можно - есть возможность задать от имени кого выполнится запрос
(проветить не могу, есть только хелп к 2005)
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132568
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Yo.!!!
Ты пишешь:

Yo.!! Мимопроходящиййоу, ты когда цитируешь чего-й-то,
то хотя бы читай, что там понаписано.
"...в DIANA будет компилиться..."
ты даже не понял, что есть DIANA...Y> откою страшную тайну ...и снова надпИси на заборах...
йоу, ты всё ж таки разберись, что есть DIANA.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132780
Председатель Мао
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 softwarer

а теперь представьте что ваше безобидная лишняя строчка open по свой сути применяет иной механизм выборки данных. То есть обычный селект будет намного быстрее работать, чем перебор строчек. А когда большой объем выборки, оракл скажет кря?
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132810
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Председатель Мао2 softwarer

а теперь представьте что ваше безобидная лишняя строчка open по свой сути применяет иной механизм выборки данных. То есть обычный селект будет намного быстрее работать, чем перебор строчек. А когда большой объем выборки, оракл скажет кря?
Не факт, это только домыслы
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132828
Председатель Мао
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper Председатель Мао2 softwarer

а теперь представьте что ваше безобидная лишняя строчка open по свой сути применяет иной механизм выборки данных. То есть обычный селект будет намного быстрее работать, чем перебор строчек. А когда большой объем выборки, оракл скажет кря?
Не факт, это только домыслы

Так может давайте проверим?
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132881
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати вот пример недостатка оракловского null в строках по сравнению с ансишным

вот это выражение
Код: plaintext
1.
'select * from my_objects where rownum <= 5 ' ||
        case when filter is null then null else 'and ' || filter end ;
если бы использовался ансишный стандарт можно было бы записать
Код: plaintext
'select * from my_objects where rownum <= 5 ' || isnull('and ' || filter,'') 

однако скорее всего щас мне предложат на это тыщу достоинств :)
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132891
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Председатель Мао SergSuper Председатель Мао2 softwarer

а теперь представьте что ваше безобидная лишняя строчка open по свой сути применяет иной механизм выборки данных. То есть обычный селект будет намного быстрее работать, чем перебор строчек. А когда большой объем выборки, оракл скажет кря?
Не факт, это только домыслы

Так может давайте проверим?
А что проверять? И там и там процедуры выплёвывают данные клиенту. Почему должна быть разница?
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132895
Председатель Мао
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperкстати вот пример недостатка оракловского null в строках по сравнению с ансишным

вот это выражение
Код: plaintext
1.
'select * from my_objects where rownum <= 5 ' ||
        case when filter is null then null else 'and ' || filter end ;
если бы использовался ансишный стандарт можно было бы записать
Код: plaintext
'select * from my_objects where rownum <= 5 ' || isnull('and ' || filter,'') 

однако скорее всего щас мне предложат на это тыщу достоинств :)

а что в оракле нет isnull()?
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132936
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2SergSuper
непонял что за лажа с isnull (NVL по оракловаму) ? ты конкатинируешь строки, а речь вроде про SQL запрос идет ...

ЗЫ. про NULL='' нужно еще раз ? в прошлый раз не хватило :) ??
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34132978
Председатель Мао
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yo.!!2SergSuper
непонял что за лажа с isnull (NVL по оракловаму) ? ты конкатинируешь строки, а речь вроде про SQL запрос идет ...

ЗЫ. про NULL='' нужно еще раз ? в прошлый раз не хватило :) ??

Речь о том, что
строка1="select .....";
строка2=isnull('and'+filter, ' ');
строка=строка1+строка2;
то есть в мс можно обойтись сразу без консрукции кєйс вен зен енд
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34133057
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Председатель Мао
Речь о том, что
строка1="select .....";
строка2=isnull('and'+filter, ' ');
строка=строка1+строка2;
то есть в мс можно обойтись сразу без консрукции кєйс вен зен енд

давай ты сначала разберешься, что такое строка и чем строка charов отличается от SQL запроса ;)

ЗЫ. постав NVL вместо isnull получишь тот же результат в оракле.
...
Рейтинг: 0 / 0
СУБД для учета финансовых потоков?
    #34133092
Председатель Мао
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yoдавай ты сначала разберешься, что такое строка и чем строка charов отличается от SQL запроса ;)

мы сейчас ведем речь о построении динамической строки SQL запроса, при чем здесь char
я так понял NVL аналог isnull?
...
Рейтинг: 0 / 0
25 сообщений из 180, страница 4 из 8
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / СУБД для учета финансовых потоков?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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