powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / HELP ??? процедура
6 сообщений из 6, страница 1 из 1
HELP ??? процедура
    #32150876
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕСТЬ ВОТ ТАКАЯ ПРОЦЕДУРА У МЕНЯ ВОПРОСЫ
1.на какой select с работает EXCEPTION?
2. Как зделать два обработчика разных на два селекта?

CREATE OR REPLACE PROCEDURE USERADMIN.WRITEDB (in_in IN INTEGER, out_in IN INTEGER, login_in IN VARCHAR2, date_in DATE, net_in INTEGER)
AS
u INTEGER;
d DATE;
BEGIN
SELECT userid INTO u FROM USERS WHERE userlogin = login_in;

SELECT datelip INTO d FROM logip WHERE userid = u and datelip = date_in;

UPDATE STAT
SET inlip= inlip + in_in,
outlip= outlip + out_in
WHERE logip.userid = u AND logip.datelip = d;

EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO LOGIP (userid, inlip, outlip, datelip, netid)
VALUES(u, in_in, out_in, date_in, net_in);
END WRITEDB;

???
P.S.
Вот такая вот хрень
...
Рейтинг: 0 / 0
HELP ??? процедура
    #32150881
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sub block per statement..
...
Рейтинг: 0 / 0
HELP ??? процедура
    #32150886
Фотография Oracle X-pert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CREATE OR REPLACE PROCEDURE USERADMIN.WRITEDB (in_in IN INTEGER, out_in IN INTEGER, login_in IN VARCHAR2, date_in DATE, net_in INTEGER)
AS
u INTEGER := 0;
d DATE := NULL;
function fc_ret_userid(in_in IN INTEGER, out_in IN INTEGER, login_in IN VARCHAR2,
date_in DATE, net_in INTEGER)
return number
is
begin
SELECT userid INTO u
FROM USERS WHERE userlogin = login_in;
return (u);
exception
WHEN NO_DATA_FOUND THEN
return (0);
INSERT INTO LOGIP (userid, inlip, outlip, datelip, netid)
VALUES(u, in_in, out_in, date_in, net_in);
end;

BEGIN
u := fc_ret_userid(...);
etc............


UPDATE STAT
SET inlip= inlip + in_in,
outlip= outlip + out_in
WHERE logip.userid = u AND logip.datelip = d;

EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO LOGIP (userid, inlip, outlip, datelip, netid)
VALUES(u, in_in, out_in, date_in, net_in);
END WRITEDB;
...
Рейтинг: 0 / 0
HELP ??? процедура
    #32150928
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT userid INTO u FROM USERS WHERE userlogin = login_in; 

SELECT datelip INTO d FROM logip WHERE userid = u and datelip = date_in; 

UPDATE STAT 
SET inlip= inlip + in_in, 
outlip= outlip + out_in 
WHERE logip.userid = u AND logip.datelip = d; 


Данный код можно переписать, сделав его по уму:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
UPDATE STAT 
   SET inlip= inlip + in_in, 
         outlip= outlip + out_in 
   WHERE 
      (userid,datelip) IN 
      (SELECT 
          a.userid, a,datelip 
        FROM 
          logip a, users b 
        WHERE 
          b.userlogin=login_in and 
          a.userid = b.userid and 
          datelip=date_in);

 IF SQL%NOTFOUND THEN
  INSERT INTO LOGIP (userid, inlip, outlip, datelip, netid) 
  VALUES(u, in_in, out_in, date_in, net_in); 
 END IF;

И никаких исключений не нужно обрабатывать
...
Рейтинг: 0 / 0
HELP ??? процедура
    #32150933
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"a.userid, a,datelip "
Пардон, здесь конечно-же не запятая, а точка.
"a.userid, a.datelip"
...
Рейтинг: 0 / 0
HELP ??? процедура
    #32151002
Глызин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот что нравиться что у форума ping нормальный
P.S. с уважением админ. ООО "Информсервис"
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / HELP ??? процедура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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