powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Запуск SQLplus из Oracle Forms
18 сообщений из 18, страница 1 из 1
Запуск SQLplus из Oracle Forms
    #38499463
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стоит задача создавать небольшую временную базу при нажатии пользователем кнопки на форме.
Для этого в кнопке пишется приблизительно следующее:
Код: plsql
1.
2.
host('sqlplus otk/otk@test @c:\forms\111.sql');
message('База создана');



При нажатии кнопки все происходит как запланировано, база создается, однако на экране остается окно с командной строкой sqlplus.exe, которое ждет ввода команды EXIT, и только после закрытия окна вводом этой команды или просто нажатия крестика пользователю выводится сообщение "База создана".
Вопрос - как передать в sqlplus команду авто-закрытия окна после создания базы.
И вообще - насколько правильно создавать базу именно этим способом?
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38499683
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kaimen,

Добавь команду exit в конец c:\forms\111.sql
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38500086
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм... Под созданием базы действительно имеется в виду создание _базы_, а не создание, например, таблицы?
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38500828
Kaimen,

судя по постам, вы начинающий. Ответ про правильность - неправильно. Вы же когда в Word работете вам не выскакивавет окошко с дос командами с просьбой его закрыть?

Если пишите GUI - никаких командных строк. Тем более что на Windows это одно, на Linux другое, на Web вообще недостижимо, у пользователя не установлен SQL+, нет прав и т.д..

Вообщем и идея и реализация бред.

Посмотрите в сторону
1) PL/SQL пакетов на БД
2) динамического SQL EXECUTE IMMEDIATE на БД
3) Временные таблицы
CREATE GLOBAL TEMPORARY TABLE T_TEMP (C_ID NUMBER(2,0), C_NAME VARCHAR2(30), C_DATE DATE) ON COMMIT DELETE/*PRESERVE*/ ROWS;
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38501775
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы.
Создавать нужно именно БАЗУ, так поставлена задача.

чиста_для_самоутвержденияKaimen,

судя по постам, вы начинающий.

Именно так.

чиста_для_самоутвержденияПосмотрите в сторону
1) PL/SQL пакетов на БД
2) динамического SQL EXECUTE IMMEDIATE на БД


Про это можно поподробнее? Первый раз слышу термин "PL/SQL пакет".
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38501831
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KaimenПервый раз слышу термин "PL/SQL пакет".

Тут хочу пояснить, что стоит задача создать форму в Oracle Forms 11g, из которой пользователь и будет генерировать базу. Вот в данном случае "PL/SQL пакет на БД" как может выглядеть (есть ли образцы?) и может ли он быть помещен в триггер OnButtonPress?
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38501841
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Замечу также, что в триггере нажатия кнопки в Oracle Forms не компилируется EXECUTE IMMEDIATE. Ошибка: "Эта возможность еще на поддерживается в программах на стороне клиента".
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38501895
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Forms-клиенте динамический sql можно использовать через forms_ddl или встроенный пакет exec_sql.
Или же можно вынести код на сервер и использовать execute immediate, dbms_sql и т.д.

Хотел бы, однако, повторить свой вопрос на счет "создания базы". Какие действия, с вашей точки зрения, входят в понятие "создание базы"?
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38501974
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=APS=-Хотел бы, однако, повторить свой вопрос на счет "создания базы". Какие действия, с вашей точки зрения, входят в понятие "создание базы"?

Вот образец.



Код: 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.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
otk/otk                                                                      
spool puotk;                                                                  
create table vggod                                                            
(gras     char(6),                                                            
 kceh     CHAR(2),                                                            
 grkl     CHAR(4),                                                            
 namr     CHAR(30),                                                           
 prpv     char(2),                                                            
 vgt      number(14,3),                                                       
 vgg      number(14,3),                                                       
 nmmd     char(22),                                                           
 stdt char(10),stiz char(10),sttn char(4),prn char(1),kgr char(2),prz char(1))
 tablespace zakaz pctfree 5 pctused 75 storage                                
(initial 102400 next 20480 pctincrease 0);                                    
commit;                                                                       
                                                                              
create table cehbrak                                                          
(gras     char(6),                                                            
 kceh     CHAR(2),                                                
 grkl     CHAR(4),                                                
 namr     CHAR(30),                                               
 prpv     char(2),                                                
 kbra     CHAR(2),                                                
 vbrac    number(8,3),                                            
 vbrap    number(8,3),                                            
 vbrai    number(8,3),                                            
 sttn     char(4),                                                
 stdt     char(10),                                               
 stiz     char(10),                                               
 prn      char(1),                                                
 nbrak    char(30),                                               
 nmmd     char(22),                                               
 kgr      char(2),                                                
 prz      char(1),                                                
 npl      char(10)) tablespace zakaz pctfree 5 pctused 75 storage 
(initial 102400 next 20480 pctincrease 0);                        
commit;                                                           
                                                                 
create table dpoter                                              
(gras     char(6),                                               
 kceh     CHAR(2),                                               
 prpv     CHAR(2),                                               
 grkl     CHAR(4),                                               
 namr     CHAR(30),                                              
 nmmd     CHAR(22),                                              
 pbrakc   number(13,2),                                          
 pbrakp   number(13,2),                                          
 pbraki   number(13,2),                                          
 sttn     char(4),                                               
 stdt     char(10),                                              
 stiz     char(10),                                              
 kgr      char(2),                                               
 prz      char(1))                                               
                   tablespace zakaz pctfree 5 pctused 75 storage 
(initial 102400 next 20480 pctincrease 0);                       
commit;                                                          
    
    create table procpc                                              
(gras     char(6),                                               
 kceh     CHAR(2),                                               
 procp    number(6,2),                                           
 procpi   number(6,2),                                           
 sttn     char(4),                                               
 stdt     char(10),                                              
 stiz     char(10),                                              
 prsum    number(6,2),                                           
 prsumi   number(6,2),                                           
 kgr      char(2),                                               
 prz      char(1))                                               
                   tablespace zakaz pctfree 5 pctused 75 storage 
(initial 102400 next 20480 pctincrease 0);                       
commit;                                                          
.rem    create table tnary                                                 
.rem    (gras     char(6),                                                 
.rem    kceh     CHAR(2),                                                  
.rem    kgr      char(2),                                                  
.rem    knary    char(7),                                                  
.rem    nnary    CHAR(200),                                                
.rem    stdt char(10),                                                     
.rem    stiz char(10),                                                     
.rem    kol      number(5))                                                
.rem                      tablespace zakaz pctfree 5 pctused 75 storage    
.rem   (initial 102400 next 20480 pctincrease 0);                          
.rem   commit;                                                             
                                                                           
create table prihin                                                        
(gras     char(6),                                                         
 kceh     CHAR(2),                                                         
 kprih    char(2),                                                         
 nprih    CHAR(80),                                                        
 vprih    number(6,1),                                                     
 stdt char(10),                                                            
 stiz char(10),                                                                                                                             
      kgr      char(2))                                                       
                   tablespace zakaz pctfree 5 pctused 75 storage         
(initial 102400 next 20480 pctincrease 0);                               
commit;                                                                  
                                                                         
                                                                         
create table tplav                                                       
(gras     char(6),                                                       
 kceh     CHAR(2),                                                       
 kol      number(5),                                                     
 stdt char(10),                                                          
 stiz char(10),                                                          
 kgr     char(2))                                                        
                   tablespace zakaz pctfree 5 pctused 75 storage         
(initial 102400 next 20480 pctincrease 0);                               
commit;                                                                  
                                                                         
create table rubeg                                                       
(kceh     CHAR(2),                                                       
 procr    number(6,2),                                                   
 gras     char(6),                                                       
  stdt char(10),                                                     
 stiz char(10),                                                     
 kgr      char(2))                                                  
                   tablespace zakaz pctfree 5 pctused 75 storage    
(initial 102400 next 20480 pctincrease 0);                          
commit;                                                             
                                                                    
                                                                    
create table tpred                                                  
(gras     char(6),                                                  
 kceh     CHAR(2),                                                  
 kol      number(5),                                                
 stdt char(10),                                                     
 stiz char(10),                                                     
 kgr     char(2))                                                   
                   tablespace zakaz pctfree 5 pctused 75 storage    
(initial 102400 next 20480 pctincrease 0);                          
commit;                                                             
                                                                    
    exit;                     




-=APS=-На Forms-клиенте динамический sql можно использовать через forms_ddl или встроенный пакет exec_sql.


Как эту радость подцепить к моему Forms?
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38502182
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что приведено в скрипте - всего лишь создание нескольких таблиц в схеме пользователя otk. Правильнее будет описывать вашу задачу именно, как "создать несколько таблиц", а не "создать базу".
Делать commit после create table - не нужно, т.к. это DDL операция.
Кстати, а что произойдет, если ваш пользователь нажмет эту кнопку еще раз, не задумывались? И ключей у вас на таблицах нет в принципе?
В общем, есть подозрение, что вы выбрали не самый удачный способ реализации вашей задачи. Кстати, не совсем понятно, в чем она конкретно заключается. :) Вы делаете что-то типа инсталлятора, который должен развернуть какие-то структуры в БД?
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38502238
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=APS=-В общем, есть подозрение, что вы выбрали не самый удачный способ реализации вашей задачи. Кстати, не совсем понятно, в чем она конкретно заключается. :) Вы делаете что-то типа инсталлятора, который должен развернуть какие-то структуры в БД?

Я попытаюсь сформулировать.
Есть комплекс по автоматизации области производственной деятельности, писанный 20 лет назад на oracle 5-ой версии. Т.е. псевдографика, командная строка и прочие радости жизни. Теперь необходимо перевести все это на 11 версию. Причем, с сохранением логики. Имеется полный набор как форм, так и отчетов (которые также надо переносить в Reports 11).
Собственно, тот кусок, о котором я тут спрашиваю, он формирует временно-постоянную базу, на основании данных из которой затем получаются отчеты. Т.е. в интерфейсе пользователя в старой версии системы есть отдельные пункты меню, при выборе которой формируется, и что важнее - заполняется по определенным условиям данная база. Точнее, не она одна, вот еще образец.


Код: 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.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
otk/otk
spool bazac                      
drop table bazac;                
commit;                          
create table bazac               
(gras     char(6),               
 kceh     CHAR(2),               
 prpv     CHAR(2),               
 vbrai    number(11,3),          
 procpg   number(7,3),           
 pbraki   number(16,3),          
 prsum    number(7,3),           
 vbrai1   number(8,3),           
 vbrai2   number(8,3),           
 vbrai3   number(8,3),           
 vbrai4   number(8,3),           
 vbrai5   number(8,3),           
 vbrai6   number(8,3),           
 vbrai7   number(8,3),           
 vbrai8   number(8,3),           
 vbrai9   number(8,3),           
 vbrai10  number(8,3),           
  vbrai11  number(8,3),       
 vbrai12  number(8,3),       
 vbrai13  number(8,3),       
 vbrai14  number(8,3),       
 vbrai15  number(8,3),       
 vbrai16  number(8,3),       
 vbrai17  number(8,3),       
 vbrai18  number(8,3),       
 vbrai19  number(8,3),       
 vbrai20  number(8,3),       
 vbrai21  number(8,3),       
 vbrai22  number(8,3),       
 vbrai23  number(8,3),       
 vbrai24  number(8,3),       
 vgt      number(14,3),      
 kgr      char(2),           
 procr    number(7,2),       
 proci    number(6,2),       
 kolp     number(5),         
 koln     number(5),         
 kolpz    number(5),         
  kolpd    number(5),                                                          
 vdef     number(12,3),                                                       
 prz      char(1),procpgp number(5,2),prsump number(5,2)) tablespace zakaz pctfree 5 pctused 75 storage
(initial 102400 next 20480 pctincrease 0);                                    
commit;                                                                       
                                                                              
drop space ptab;                                                              
                                                                              
commit;                                                                       
                                                                                                                      
accept dat char prompt 'Введите год для формирования базы предыдущего года(гггг):'                                                                             
                                                                              
insert into bazac (kceh,prpv,vbrai) select kceh,prpv,sum(vbrai/1000)
        from cehbrak where grkl is not null and substr(gras,3,4)='&dat'      
  group by kceh,prpv;                                                        
commit;                                                                                                                                                                                                                             
                                                                            
insert into bazac (kceh,vbrai,vbrai1,                                        
                                vbrai2,                                      
                                vbrai3,                                      
                                vbrai4,                                      
                                vbrai5,                                      
                               vbrai6,                                      
                                vbrai7,                                      
                               vbrai8,                                      
                               vbrai9,                                      
                               vbrai10,                                     
                               vbrai11,                                     
                               vbrai12,  
                                vbrai13,                       
                                vbrai14,                       
                                vbrai15,                       
                                vbrai16,                       
                                vbrai17,                       
                                vbrai18,                       
                                vbrai19,                       
                                vbrai20,                       
                                vbrai21,                       
                                vbrai22,                       
                                vbrai23,                       
                                vbrai24)                       
                                 select kceh,sum(vbrai),       
                            sum(vbra1),                        
                            sum(vbra2),                        
                            sum(vbra3),                        
                            sum(vbra4),                        
                            sum(vbra5),                        
                            sum(vbra6),                        
                            sum(vbra7),                        
                            sum(vbra8),
                                                          sum(vbra9),                                     
                            sum(vbra10),                                    
                            sum(vbra11),                                    
                            sum(vbra12),                                    
                            sum(vbra13),                                    
                            sum(vbra14),                                    
                            sum(vbra15),                                    
                            sum(vbra16),                                    
                            sum(vbra17),                                    
                            sum(vbra18),                                    
                            sum(vbra19),                                    
                            sum(vbra20),                                    
                            sum(vbra21),                                    
                            sum(vbra22),                                    
                            sum(vbra23),                                    
                            sum(vbra24)                                     
             from markgp                                                    
  group by kceh;                                                            
commit;                                                                     

 insert into bazac (kceh,vbrai,vbrai1,              
                                vbrai2,            
                                vbrai3,            
                                vbrai4,            
                                vbrai5,            
                                vbrai6,            
                                vbrai7,            
                                vbrai8,            
                                vbrai9,            
                                vbrai10,           
                                vbrai11,           
                                vbrai12,           
                                vbrai13,           
                                vbrai14,           
                                vbrai15,           
                                vbrai16,           
                                vbrai17,           
                                vbrai18,           
                                vbrai19,           
                                vbrai20,           
                                vbrai21,           
                                          vbrai22,                         
          vbrai23,                         
          vbrai24)                         
           select kceh,sum(vbrai),         
      sum(vbra1),                          
      sum(vbra2),                          
      sum(vbra3),                          
      sum(vbra4),                          
      sum(vbra5),                          
      sum(vbra6),                          
      sum(vbra7),                          
      sum(vbra8),                          
      sum(vbra9),                          
      sum(vbra10),                         
      sum(vbra11),                         
      sum(vbra12),                         
      sum(vbra13),                         
      sum(vbra14),                         
      sum(vbra15),                         
      sum(vbra16),                         
      sum(vbra17),                         
      sum(vbra18),                         
                            sum(vbra19),                                    
                            sum(vbra20),                                    
                            sum(vbra21),                                    
                            sum(vbra22),                                    
                            sum(vbra23),                                    
                            sum(vbra24)                                     
             from markgm                                                    
  group by kceh;                                                            
commit;                                                                                                                                                             
                                                                            
update bazac set pbraki =                                                   
      (select sum(pbrakc / 1000) from dpoter where substr(gras,3,4)='&dat'  
and bazac.kceh=dpoter.kceh and bazac.prpv=dpoter.prpv group by kceh,prpv)   
  where  (kceh||prpv) in (select kceh||prpv from dpoter);                   
commit;                                                                                   
                                                                            
update bazac set pbraki =                                                   
            (select sum(pbrakc / 1000) from dpoter where substr(gras,3,4)='&dat'
            and bazac.kceh=dpoter.kceh                                      
            group by kceh)                                                  
  where prpv is null and (kceh) in (select kceh from dpoter);               
commit;                                                                     
            
update bazac set vgt =                                                      
            (select sum(vgt)/1000 from vggod where substr(gras,3,4)='&dat'  
         and vggod.prn = '*'  and prpv is not null                          
and vggod.kceh=bazac.kceh and bazac.prpv=vggod.prpv                         
    group by kceh,prpv)                                                     
  where prpv is not null and (kceh||prpv) in (select kceh||prpv from vggod  
      where prpv is not null and prn ='*' and substr(gras,3,4)='&dat');     
commit;                                                                                                                                             
                                                                
update bazac set vgt =                                                       
            (select sum(vgt)/1000 from vggod where substr(gras,3,4)='&dat'   
         and vggod.prn = '*'  and prpv is not null                           
and vggod.kceh=bazac.kceh and bazac.prpv=vggod.prpv                          
    group by kceh,prpv)                                                      
  where prpv is not null and (kceh||prpv) in (select kceh||prpv from vggod   
      where prpv is not null and prn ='*' and substr(gras,3,4)='&dat');      
commit;                                                                      
                                                                    
update bazac set vgt =                                                       
(select sum(vgt)/1000 from vggod where substr(gras,3,4)='&dat' and vggod.prn 
is null and vggod.prpv ='*' and vggod.kceh=bazac.kceh                        
    group by kceh)                                                           
  where prpv is null and (kceh) in (select kceh from vggod where prpv='*');  
commit;                                                                      
                                                                                                 
update bazac set koln = (select sum(kol) from tnary where substr(gras,3,4)='&dat'
and tnary.kceh=bazac.kceh                                                  
    group by kceh)                                                         
where prpv is null and (kceh) in (select kceh from tnary);                 
commit;                                                                                  
                                                                           
update bazac set kolp =                                                    
(select sum(kol) from tplav where substr(gras,3,4)='&dat' and              
                               tplav.kceh=bazac.kceh                       
    group by kceh)                                                         
  where prpv is null and (kceh) in (select kceh from tplav);
     commit;                                                               
                                                      
update bazac set kolpz=                                               
(select sum(kol) from tpred where substr(gras,3,4)='&dat' and         
                               tpred.kceh=bazac.kceh                  
    group by kceh)                                                    
  where prpv is null and (kceh) in (select kceh from tpred);          
commit;                                                               
                                                                    
update bazac set procpg=                                                     
(select prsum from procpc where gras='12'||'&dat' and                        
                               bazac.kceh=kceh)                              
  where  prpv is null and kceh in (select kceh from procpc where gras='12'||'&dat');
commit;                                                                      
                                                                             
insert into bazac (gras,kceh,procpg,kgr,prz) select gras,kceh,prsum,kgr,prz  
  from procpc    where gras='12'||'&dat' and kceh='69';                      
                                                                             
insert into bazac (gras,kceh,procpg,kgr,prz) select gras,kceh,prsum,kgr,prz  
  from procpc    where gras='12'||'&dat' and kceh='70';                      
                                                                             
update bazac (vgt,koln,kolp,kolpz)=                                          
              select sum(vgt),sum(koln),sum(kolp),sum(kolpz)                 
 from bazac                                                                  
 where kceh in ('06','18') and prpv is null)                                 
where kceh='18' and prpv is null;                                            
                                                                                                                                                          
update bazac set procr = (nvl(vbrai,0)/nvl(vgt,0))*100 where prpv is null and                                     
(vgt is not null and  nvl(vgt,0)!=0)
            and (vbrai is not null and  nvl(vbrai,0)!=0);); 
commit;                                 
 delete from bazac                                           
where kceh='06' and prpv is null;                           
                                                            
update bazac set gras='12'||&dat;                           
commit;                                                     
                                                            
update bazac                                                
set prpv='44'                                               
where kceh='06' and prpv='00';                              
                                                            
update bazac                                                
set prpv='36'                                               
where kceh='18' and prpv='00';                              
                                                            
commit;                                                     
               
update bazac set                                            
  prz = 'o' where kceh in ('10','24');                      
                                                                           
update bazac set                                                         
  prz = 's' where kceh in ('01','02','03','12','16','21','61','25');     
commit;                                                                  
                                                                         
update bazac set                                                         
  prz = 'p' where kceh in ('04','05','06','07','09','18','19','20','28', 
                                                         '40');          
commit;                                                                                                                                          
                                                                         
update bazac set                                                         
  kgr = null where kceh='62';                                            
commit;                                                                  
update bazac set                                                         
  kgr = '0' where kceh  in ('01','02','03','12','16','61','21','25');    
commit;                                                                  
update bazac set                                                         
  kgr='9' where kceh in ('10');                                          
  commit;                                                                
update bazac set                                                         
  kgr = '1' where kceh ='04'                                             
    and kgr is null;                        
commit;                                    
update bazac set                           
  kgr = '2' where kceh in ('07')           
   and kgr is null;                        
commit;                                    
                                                                                      
update bazac set                           
  kgr = '3' where kceh ='05'               
   and kgr is null;                        
commit;                                    
update bazac set                           
  kgr = '4' where kceh  in ('19','40')     
   and kgr is null;                        
commit;                                    
update bazac set                           
  kgr = '5' where kceh = '28'              
   and kgr is null;                        
commit;                                    
update bazac set                           
  kgr = '6' where kceh='06'                
        and kgr is null;                                          
commit;                                                      
update bazac set                                             
  kgr = '7' where kceh='09'                                  
   and kgr is null;                                          
commit;                                                      
update bazac set                                             
  kgr ='8' where kceh ='18'                                  
   and kgr is null;                                          
commit;                                                      
                                                             
update bazac set                                             
  kgr = '8' where kceh ='20'                                 
   and kgr is null;                                          
commit;                                                        
                                                             
insert into bazac(gras,kceh)                                 
values ('12'||'&dat','91');                                  
                                                                               
insert into bazac(gras,kceh)                                                 
values ('12'||'&dat','92');                                                  
                                                                             
insert into bazac(gras,kceh)                                                 
values ('12'||'&dat','99');                                                  
                                                                             
commit;                                                                      
                                                                             
update bazac set                                                             
(pbraki,vgt,vbrai,vbrai1,vbrai2,vbrai3,vbrai4,vbrai5,vbrai6,vbrai7,vbrai8,vbrai9,
vbrai10,vbrai11,vbrai12,vbrai13,vbrai14,vbrai15,vbrai16,vbrai17,vbrai18,     
vbrai19,vbrai20,vbrai21,vbrai22,vbrai23,vbrai24)                             
= (select                                                                    
sum(pbraki),sum(vgt),sum(vbrai),sum(vbrai1),sum(vbrai2),sum(vbrai3),sum(vbrai4),
sum(vbrai5),sum(vbrai6),sum(vbrai7),sum(vbrai8),sum(vbrai9),sum(vbrai10),    
sum(vbrai11),sum(vbrai12),sum(vbrai13),sum(vbrai14),sum(vbrai15),sum(vbrai16),
sum(vbrai17),sum(vbrai18),sum(vbrai19),sum(vbrai20),sum(vbrai21),sum(vbrai22),
sum(vbrai23),sum(vbrai24)                                                    
    from bazac                                                               
       where prpv is null and prz='s'                                        
       group by prz)                                                                                                                    
         where kceh='91';                                                              
                                                                              
commit;                                                                       
                                                                              
update bazac set                                                              
(pbraki,vgt,vbrai,vbrai1,vbrai2,vbrai3,vbrai4,vbrai5,vbrai6,vbrai7,vbrai8,vbrai9,
vbrai10,vbrai11,vbrai12,vbrai13,vbrai14,vbrai15,vbrai16,vbrai17,vbrai18,      
vbrai19,vbrai20,vbrai21,vbrai22,vbrai23,vbrai24)                              
= (select                                                                     
sum(pbraki),sum(vgt),sum(vbrai),sum(vbrai1),sum(vbrai2),sum(vbrai3),sum(vbrai4),
sum(vbrai5),sum(vbrai6),sum(vbrai7),sum(vbrai8),sum(vbrai9),sum(vbrai10),     
sum(vbrai11),sum(vbrai12),sum(vbrai13),sum(vbrai14),sum(vbrai15),sum(vbrai16),
sum(vbrai17),sum(vbrai18),sum(vbrai19),sum(vbrai20),sum(vbrai21),sum(vbrai22),
sum(vbrai23),sum(vbrai24)                                                     
     from bazac                                                               
       where prpv is null and prz='p'                                         
       group by prz)                                                          
where kceh='92';                                                              
                                                                              
commit;
                                                                             
update bazac set                                                             
(pbraki,vgt,vbrai,vbrai1,vbrai2,vbrai3,vbrai4,vbrai5,vbrai6,vbrai7,vbrai8,vbrai9,
vbrai10,vbrai11,vbrai12,vbrai13,vbrai14,vbrai15,vbrai16,vbrai17,vbrai18,     
vbrai19,vbrai20,vbrai21,vbrai22,vbrai23,vbrai24)                             
= (select                                                                    
sum(pbraki),sum(vgt),sum(vbrai),sum(vbrai1),sum(vbrai2),sum(vbrai3),sum(vbrai4),
sum(vbrai5),sum(vbrai6),sum(vbrai7),sum(vbrai8),sum(vbrai9),sum(vbrai10),    
sum(vbrai11),sum(vbrai12),sum(vbrai13),sum(vbrai14),sum(vbrai15),sum(vbrai16)
sum(vbrai17),sum(vbrai18),sum(vbrai19),sum(vbrai20),sum(vbrai21),sum(vbrai22)
sum(vbrai23),sum(vbrai24)                                                    
                from bazac                                                   
       where prpv is null and prz in ('c','s','p','o'))                      
where kceh='99';                                                             
                                                                             
update bazac                                                                 
set prsum=(select distinct prsumi from procpc                                
           where gras='12'||'&dat')                                          
where kceh='99';                                                             
                                                                             
commit;                                                                      
exit;                                                                        
 create index BCGRAS98 on BAZAC(GRAS);                                        
create index BCKCEH98 on BAZAC(KCEH);                                        
create index BCPRPV98 on BAZAC(PRPV);                                      
                                                                             
exit;                                                                        
                                                                             
  разнести дополн, если нет в cehbrak                                  
                                                                             
insert into bazac (kceh,pbraki) select kceh,sum(pbrakc/1000)                 
from dpoterc where substr(gras,3,2)='98' and kceh='05' group by kceh;        
commit;                                                                      
                                                                             
update bazac set prz='p',prz='3', gras='1298' where kceh='05' and prpv is      
null;
                                                                             
exit;




Заходит пользователь в это меню в строго определенное время, в соответствии с регламентом. Предприятие крупное, поэтому люди годами привыкли работать именно так. Отсюда и требование сохранить логику.
Опыта у меня мягко скажем маловато, поэтому я не могу предложить оптимизацию имеющегося уже варианта, пока получается только транслировать то что есть на новую платформу.
Вопросов возникает миллион, т.к. я успел понять и по данному форуму, что например тот же Oracle Reports это худшая (как минимум с точки зрения удобства разработки) из имеющихся платформ для реализации отчетов - чисто кровопийца.
Ну и вот с Forms тоже возникают вопросы разной степени сложности...
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38502324
Les
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постарайся всю эту логику перенести в БД, в хранимую процедуру. И там ты сможешь вызывать execute immediate, через который ты можешь выполнить все, что твоей душе угодно. В том числе он позволяет выполнить clob
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38502359
-=APS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То, что опыта и знаний маловато - это нехорошо, т.к. шишек набьёте, а это часто людей демотивирует.

Прямо скажем, код приведенный вами, выдержан в стиле а-ля dBase, Clipper и т.п. 80-х годов :) Подозреваю, что он заточен исключительно на запуск одним человеком в определенное время.
Создавать таблицы на лету вряд вам нужно. Код по их заполнению данными действительно можно вынести на сервер. Читайте мануалы. Хранимые процедуры вам уже порекоментовали. Concepts почитайте. Польза будет :)
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38503037
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-=APS=-,

Спасибо, буду почитать.
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38503235
Фотография pan159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще то можно мигрировать формы, начиная с версии 3.5 на 11 версию. Только с промежуточными остановками, типа версии 4.5 и 6. Работать будет, но выглядит, конечно, коряво.

Как то мне пришлось поднимать с 3.5 до 6i сотню форм. Ушло на это до 2-х недель. После неспеша уже переделал все заново.
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38504685
Kaimen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pan159,
Миграция это прекрасно, но мне не подходит. Я тут пытаюсь убить 2 зайцев - сделать дело и научиться работать в Forms/Reports. Получается с переменным успехом конечно, не хватает подготовки.
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38504806
19 Белых Котиков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
host('sqlplus otk/otk@test @c:\forms\111.sql < nul');
message('База создана');
...
Рейтинг: 0 / 0
Запуск SQLplus из Oracle Forms
    #38517036
AndrK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kaimen,

Если не секрет, на каком металлургическом заводе эта мекомповская разработка ещё жива?
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Запуск SQLplus из Oracle Forms
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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