Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста что с идентификатором / 12 сообщений из 12, страница 1 из 1
26.01.2017, 08:25
    #39391756
maxwait
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
Создал процедуру
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE PROCEDURE insertTBL_DATADEP(
	   p_ContrId IN TBL_DATADEP.ContrId%TYPE,
	   p_Date_Begin IN TBL_DATADEP.Date_Begin%TYPE,
	   p_Date_End IN TBL_DATADEP.Date_End%TYPE,
	   p_Mounth IN TBL_DATADEP.Mounth%TYPE)
IS
BEGIN
   FOR i IN 1 .. p_Mounth LOOP
      INSERT INTO TBL_DATADEP (ContrId, DATE_BEGIN, DATE_END, MOUNTH, LASTWORKDAYINMOUNTH)
      select p_ContrId
             , p_Date_Begin
             , p_Date_End
             , p_Mounth
             /*, ADD_MONTHS(p_Date_Begin,i)*/ --вот так работает
             , ADD_MONTHS(D3_Pkg.Get_Date,i) -- так нет
        from dual;
      COMMIT;
   END LOOP;
END;



хотя если отдельно селект выполнить
Код: plsql
1.
select D3_Pkg.Get_Date from dual

-- все хорошо возвращает текущую дату
...
Рейтинг: 0 / 0
26.01.2017, 08:26
    #39391757
maxwait
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
Да забыл сказать ошибка
Error: PL/SQL: ORA-00904: : invalid identifier
...
Рейтинг: 0 / 0
26.01.2017, 08:35
    #39391762
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
maxwait
Код: plsql
1.
select D3_Pkg.Get_Date from dual


-- все хорошо возвращает текущую датуRTFM SYSDATE
...
Рейтинг: 0 / 0
26.01.2017, 08:50
    #39391766
maxwait
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
Elic,

Не совсем понял, имеете ввиду нужно сделать
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE PROCEDURE insertTBL_DATADEP(
	   p_ContrId IN TBL_DATADEP.ContrId%TYPE,
	   p_Date_Begin IN TBL_DATADEP.Date_Begin%TYPE,
	   p_Date_End IN TBL_DATADEP.Date_End%TYPE,
	   p_Mounth IN TBL_DATADEP.Mounth%TYPE)
IS
BEGIN
   FOR i IN 1 .. p_Mounth LOOP
      INSERT INTO TBL_DATADEP (ContrId, DATE_BEGIN, DATE_END, MOUNTH, LASTWORKDAYINMOUNTH)
      select p_ContrId
             , p_Date_Begin
             , p_Date_End
             , p_Mounth
             /*, ADD_MONTHS(p_Date_Begin,i)*/ --вот так работает
             , ADD_MONTHS(TO_DATE(D3_Pkg.Get_Date,'dd.mm.yyyy'),i) -- тоже не помогло
        from dual;
      COMMIT;
   END LOOP;
END;


Ругается на
D3_Pkg.Get_Date
Invalid Identifier
...
Рейтинг: 0 / 0
26.01.2017, 08:53
    #39391767
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
maxwaitНе совсем понял, имеете ввиду нужно сделатьНе вводить ненужных сущностей.
...
Рейтинг: 0 / 0
26.01.2017, 08:54
    #39391769
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
maxwait
Код: plsql
1.
TO_DATE(D3_Pkg.Get_Date,'dd.mm.yyyy'),i) -- тоже не помогло

Усугублять дебилизмом не стоит.
...
Рейтинг: 0 / 0
26.01.2017, 09:00
    #39391771
maxwait
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
Elic,

Ладно, понял что усугубил, и ввел ненужную сущность, но вопрос остался и дабы не плодить далее ненужных сущностей, не могли бы подсказать, что не так то ?)
...
Рейтинг: 0 / 0
26.01.2017, 09:11
    #39391777
maxwait
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
Elic,

похоже мой идиотизм углубляется

Код: 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.
CREATE OR REPLACE PROCEDURE insertTBL_DATADEP(
	   p_ContrId IN TBL_DATADEP.ContrId%TYPE,
	   p_Date_Begin IN TBL_DATADEP.Date_Begin%TYPE,
	   p_Date_End IN TBL_DATADEP.Date_End%TYPE,
	   p_Mounth IN TBL_DATADEP.Mounth%TYPE)
IS
BEGIN
   DELETE FROM TBL_DATADEP;
   FOR i IN 0 .. p_Mounth-1 LOOP
      INSERT INTO TBL_DATADEP (ContrId, DATE_BEGIN, DATE_END, MOUNTH, LASTWORKDAYINMOUNTH)
      select p_ContrId
             , p_Date_Begin
             , p_Date_End
             , i
             /*, ADD_MONTHS(p_Date_Begin,i)*/
             /*, ADD_MONTHS(D3_Pkg.Get_Date,i)*/
             , case when ( select last_day(ADD_MONTHS(sysdate,i)) - case trim(to_char(last_day(ADD_MONTHS(sysdate,i)), 'DAY',                                   'NLS_DATE_LANGUAGE=ENGLISH'))
                       when 'SUNDAY' then 2
                       when 'SATURDAY' then 1
                       else 0
                    end  
                from dual) < p_Date_End 
                     then  ( select last_day(ADD_MONTHS(trunc(sysdate),i)) - case trim(to_char(last_day(ADD_MONTHS(trunc(sysdate),i)), 'DAY', 'NLS_DATE_LANGUAGE=ENGLISH'))
                       when 'SUNDAY' then 2
                       when 'SATURDAY' then 1
                       else 0
                    end  
                from dual)
                else p_Date_End end
                  
      from dual;

      COMMIT;

   END LOOP;
END;


но к сожалению он работает. но как сделать по-хорошему ? а не по идиотски?)
Спасибо!
...
Рейтинг: 0 / 0
26.01.2017, 12:03
    #39391945
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
maxwaitне по идиотски?RTFM INSERT…VALUES
И вообще повыкидай дебильный select … from dual.
...
Рейтинг: 0 / 0
26.01.2017, 12:46
    #39391997
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
maxwait, Третья тема об одном и том же

ctrl+c/ctrl+v
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSERT INTO TBL_DATADEP (ContrId, DATE_BEGIN, DATE_END, MOUNTH, LASTWORKDAYINMOUNTH)
select c.Id 
       , trunc(p.Date_Begin) as Date_Begin
       , trunc(p.Date_End) as Date_End
       , trunc(p.Date_End) - trunc(p.Date_begin) as CountDate
       , MONTHS_BETWEEN(trunc(p.Date_End), trunc(p.Date_begin)) as CountMonth
       ,least(least(trunc(last_day(add_months(p.Date_begin, level)), 'IW') + 4,last_day(add_months(p.Date_begin, level))),p.Date_End)
from tabl1 c
     join tabl2 p on p.Contract_Id = c.id
where ( p.Date_begin <= '01.01.2017' and (p.Date_END > '01.01.2017' or c.date_close is null)  )
connect by level <= months_between(p.Date_END, p.Date_begin)
      and c.id = 6315;


но есть нюансы :)
...
Рейтинг: 0 / 0
26.01.2017, 13:26
    #39392040
maxwait
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
123йй,

Ну в процессе решения всплывают все новые и новые моменты) Уж извините, не силен в oracle пока что учусь)
...
Рейтинг: 0 / 0
30.01.2017, 12:53
    #39394542
AnSi_Sr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите пожалуйста что с идентификатором
123ййmaxwait, Третья тема об одном и том же

Код: plsql
1.
p.Date_begin <= '01.01.2017' and (p.Date_END > '01.01.2017' or c.date_close is null)  )


но есть нюансы :)
Так литералы для дат не пишут
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста что с идентификатором / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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