powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста что с идентификатором
12 сообщений из 12, страница 1 из 1
Подскажите пожалуйста что с идентификатором
    #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
Подскажите пожалуйста что с идентификатором
    #39391757
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да забыл сказать ошибка
Error: PL/SQL: ORA-00904: : invalid identifier
...
Рейтинг: 0 / 0
Подскажите пожалуйста что с идентификатором
    #39391762
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait
Код: plsql
1.
select D3_Pkg.Get_Date from dual


-- все хорошо возвращает текущую датуRTFM SYSDATE
...
Рейтинг: 0 / 0
Подскажите пожалуйста что с идентификатором
    #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
Подскажите пожалуйста что с идентификатором
    #39391767
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwaitНе совсем понял, имеете ввиду нужно сделатьНе вводить ненужных сущностей.
...
Рейтинг: 0 / 0
Подскажите пожалуйста что с идентификатором
    #39391769
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait
Код: plsql
1.
TO_DATE(D3_Pkg.Get_Date,'dd.mm.yyyy'),i) -- тоже не помогло

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

Ладно, понял что усугубил, и ввел ненужную сущность, но вопрос остался и дабы не плодить далее ненужных сущностей, не могли бы подсказать, что не так то ?)
...
Рейтинг: 0 / 0
Подскажите пожалуйста что с идентификатором
    #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
Подскажите пожалуйста что с идентификатором
    #39391945
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwaitне по идиотски?RTFM INSERT…VALUES
И вообще повыкидай дебильный select … from dual.
...
Рейтинг: 0 / 0
Подскажите пожалуйста что с идентификатором
    #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
Подскажите пожалуйста что с идентификатором
    #39392040
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
123йй,

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


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