powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция текущей даты SQL
25 сообщений из 28, страница 1 из 2
Функция текущей даты SQL
    #40014132
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимо разработать код хранимой процедуры\функции, которая при передаче в нее текущей отчетной даты будет возвращать в табличном режиме значения текущей даты и дат предыдущих 3 недель.
Опыта маловато, может, что подскажите.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014139
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Negativ,

pipelined function как вариант.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> create or replace type t_dt is table of date
/

Type created.

SQL> create or replace function f_dt(p_dt date) return t_dt pipelined is
  2  begin
  3      for v in (select p_dt + level - 22 dt from dual connect by level <= 22) loop
  4          pipe row (v.dt);
  5      end loop;
  6  end;
  7  /

Function created.

SQL> select * from table(f_dt(sysdate));
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014166
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, пытаюсь закомпилить, что-то не выходит, дату проверочную вставляю тоже выдает ошибку

Error starting at line : 4 in command -
Type created.
Error report -
Unknown Command


Function F_DT compiled

LINE/COL ERROR
--------- -------------------------------------------------------------
2/3 PLS-00103: Встретился символ "2" в то время как ожидалось одно из следующих: begin function pragma процедура subtype тип <идентификатор> <идентификатор с двойными кавычками-разделителями> current cursor удал. exists prior external язык
Errors: check compiler log
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014171
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Negativ

--------- -------------------------------------------------------------
2/3 PLS-00103: Встретился символ "2" в то время как ожидалось одно из следующих: begin function pragma процедура subtype тип <идентификатор> <идентификатор с двойными кавычками-разделителями> current cursor удал. exists prior external язык
Errors: check compiler log

Номера строк (в данном случае 2) выставляет SQL*Plus, а не программист
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014187
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tru55, поправил только теперь за место дат за прошедшие 3 недели, он выдает даты за 11 дней
Result S
--------
23.10.20
24.10.20
25.10.20
26.10.20
27.10.20
28.10.20
29.10.20
30.10.20
31.10.20
01.11.20
02.11.20
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014200
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Negativ,

Покажите в sqlplus, что вы там сделали.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014203
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть подозрение, что все 2 заменил на 1
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014207
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,нужно проверочную дату сделать типа : "2017-07-07"

create or replace type t_dt is table of date
/

Type created.

create or replace function f_dt(p_dt date) return t_dt pipelined is
begin
for v in (select p_dt + level - 22 dt from dual connect by level <= 22) loop
pipe row (v.dt);
end loop;
end;
/

Function created.

select * from table(f_dt(sysdate));
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014215
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Negativ,

И в sqlplus возвращает 11 строк? Листинг полный покажите.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014223
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,
Type T_DT compiled


Error starting at line : 4 in command -
Type created.
Error report -
Unknown Command

SP2-0044: For a list of known commands enter HELP
and to leave enter EXIT.

Function F_DT compiled


Error starting at line : 14 in command -
Function created.
Error report -
Unknown Command


Result S
--------
12.10.20
13.10.20
14.10.20
15.10.20
16.10.20
17.10.20
18.10.20
19.10.20
20.10.20
21.10.20
22.10.20

Result S
--------
23.10.20
24.10.20
25.10.20
26.10.20
27.10.20
28.10.20
29.10.20
30.10.20
31.10.20
01.11.20
02.11.20

22 rows selected.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014227
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот английским по белому написано 22 строки
Но человек вещает про 11 (похоже, полная выборка)
Ну как таким перцам что-то можно объяснить -- он ведь даже не вникнул, что код делает
Просто в его вселенной оно возвращает 11 строк
И потом эти луди хорошо если становятся начальниками, обидно, но хоть не смертельно, но ведь сначала они будут разработчиками...
И запрограммируют твой ИВЛ, чтоб ты не долго мучался короной
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014244
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров, я ведь сразу сказал, я только начинающий
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014249
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вячеслав Любомудров, и надо чтобы возвращал не 11 строк, а именно дату на неделю раньше указанной
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014260
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

У меня наивный вопрос, а селект там зачем?))
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014261
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
значения текущей даты и дат предыдущих 3 недель.

дату на неделю раньше указанной

нужно проверочную дату сделать типа : "2017-07-07"

У вас прежде всего не уяснена задача. Начните с ее постановки. Какое данные на входе, какие должны быть на выходе.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014287
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров
Вот английским по белому написано 22 строки
Но человек вещает про 11 (похоже, полная выборка)
Ну как таким перцам что-то можно объяснить -- он ведь даже не вникнул, что код делает
Просто в его вселенной оно возвращает 11 строк
И потом эти луди хорошо если становятся начальниками, обидно, но хоть не смертельно, но ведь сначала они будут разработчиками...
И запрограммируют твой ИВЛ, чтоб ты не долго мучался короной

Оффтопный анекдот в ответвленную темуЯ учусь на электрика, и судя по мне и моим одногруппникам,
после того, как мы выпустимся, половину из нас сразу убьет током,
а вторая половина оставит без электричества минимум половину города.

А ещё мой брат учится на врача в мединституте:
и тех, кого не убьет сразу током, убьёт он или его одногруппники.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014295
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode,

Чтобы намекнуть, что задача в принципе решается без функции
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014296
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, ты считаешь что можно без знаний, только "с помощью зала" работать на серьезном предприятии
И мы за десяток лет видим твои ответы -- а что вам ответили в техподдержке


И да, чувак (хоть ты и взбесишься от этого названия), в медицинские институты дебилов с корочками не набирали и им пропущенные лекции не прощали (а что ты ребенку скажешь -- я тогда рожала?) и знания у них даже после первого курса были такие, что Авицена бы в ладоши похлопал
В общем, ты характеризуешь неплохую контору Форс с очень некрасивой точки зрения
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014299
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс, мой портак
Я опять забываю цитировать
Мой гадкий пост предназначался сотруднику Форс Валерию Юринскому ака SQL*Plus
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014308
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Negativ,

на подумать
Код: plsql
1.
2.
3.
4.
5.
6.
7.
set serveroutput on
begin
    for i in -21..0 loop
        dbms_output.put_line(sysdate + i);
    end loop;
end;
/



упд. примерно об этом был вопрос "на фига козе селект?"
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014317
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров
Упс, мой портак
Я опять забываю цитировать
Мой гадкий пост предназначался сотруднику Форс Валерию Юринскому ака SQL*Plus

Дружище, ты еще и тему попутал. :-(
В этой теме народ вообще не понимает о чем идёт речь.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014500
Negativ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,выставил от 4 до 1 почти получилось, то что мне нужно.
объявляю переменную к которой каждую итерацию прибавляю 7, начинает ругаться на переменную и итерацию
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014522
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Negativ
объявляю переменную, начинает ругаться


В таком стиле если описывать, то совет будет только как в анекдоте "по колесам пинал? пепельницу вытряхивал? ну, тогда не знаю".

Полностью листинг давайте.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014597
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Чтобы намекнуть, что задача в принципе решается без функции

Решается, но задание в универе топикстартеру дали именно сделать функцию и лучше так не намекать, новички потом начинают лепить запросы в PL/SQL всегда, где нужно и где не нужно.
...
Рейтинг: 0 / 0
Функция текущей даты SQL
    #40014601
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
упд. примерно об этом был вопрос "на фига козе селект?"

Ага, я бы и piplined не стал делать, мизерное фиксированное количество можно и через varray
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create or replace type t_dt is varray(22) of date;
/

create or replace function f_dt(p_dt date) return t_dt is
    l_dt t_dt := t_dt();
begin
    l_dt.extend(22);
    for i in 1 .. 22 loop
        l_dt(i) := p_dt - (22 - i);
    end loop;
    return l_dt;
end;
/

select * from table(f_dt(trunc(sysdate)));
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция текущей даты SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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