Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 вызов функции в select  [new]
antonkashin
Member

Откуда:
Сообщений: 21
Всем привет, подскажите как вызвать пользовательскую функцию в блоке select?
create or replace function busdays(st in date, en in date) RETURN number is
busdays NUMBER := 0;
stDate DATE;
enDate DATE;
begin
stDate := TRUNC(st);
enDate := TRUNC(en);

if enDate >= stDate
then
busdays := enDate - stDate;

END IF;

   RETURN(busdays);
END;

select to_date('25.01.2019 10:10:00', 'DD.MM.YYYY HH24:MI:SS') as st_dt,
to_date('30.01.2019 18:30:52', 'DD.MM.YYYY HH24:MI:SS') as end_dt, busdays(st_dt, end_dt) from dual;


такой код че то не работает
28 май 19, 10:49    [21895433]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1642
че то


Оракл так и говорит "че-то неверно у тебя" ?
28 май 19, 10:55    [21895440]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
Anatoly B
Member

Откуда:
Сообщений: 178
antonkashin,

select busdays(st_dt, end_dt)
from (
select to_date('25.01.2019 10:10:00', 'DD.MM.YYYY HH24:MI:SS') as st_dt, 
       to_date('30.01.2019 18:30:52', 'DD.MM.YYYY HH24:MI:SS') as end_dt from dual);
28 май 19, 10:56    [21895445]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
-2-
Member

Откуда:
Сообщений: 15330
antonkashin
как вызвать пользовательскую функцию в блоке select?
Сначала основы sql выучи, потом берись за функции.
28 май 19, 10:58    [21895449]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
antonkashin
Member

Откуда:
Сообщений: 21
Anatoly B, спасибо, но выдает ошибку
Error(20,1): PLS-00103: Встретился символ "SELECT"
28 май 19, 11:21    [21895481]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1489
antonkashin,

нельзя просто так взять и заселектить в никуда дынные в PL/SQL блоке...
28 май 19, 11:32    [21895488]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
antonkashin,

сначала создайте ф-цию

потом отдельно выполните селект

зы
если версия позволяет можно "протестировать" указав ф-цию в with

....
stax
28 май 19, 11:32    [21895492]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
dmdmdm
Member

Откуда: Нижний Новгород
Сообщений: 1642
antonkashin, вот так надо задавать вопрос.

+
Connected to Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 
Connected as big3@//СэрВер:11521/XE

SQL> 
SQL> select st_dt, end_dt
  2    from (select to_date('25.01.2019 10:10:00', 'DD.MM.YYYY HH24:MI:SS') as st_dt,
  3                 to_date('30.01.2019 18:30:52', 'DD.MM.YYYY HH24:MI:SS') as end_dt
  4            from dual);

ST_DT       END_DT
----------- -----------
25.01.2019  30.01.2019

SQL> 
SQL> select fu(st_dt, end_dt)
  2    from (select to_date('25.01.2019 10:10:00', 'DD.MM.YYYY HH24:MI:SS') as st_dt,
  3                 to_date('30.01.2019 18:30:52', 'DD.MM.YYYY HH24:MI:SS') as end_dt
  4            from dual);
select fu(st_dt, end_dt)
  from (select to_date('25.01.2019 10:10:00', 'DD.MM.YYYY HH24:MI:SS') as st_dt,
               to_date('30.01.2019 18:30:52', 'DD.MM.YYYY HH24:MI:SS') as end_dt
          from dual)

ORA-00904: "FU": недопустимый идентификатор

SQL> 
28 май 19, 11:34    [21895496]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
Щукина Анна
antonkashin,

нельзя просто так взять и заселектить в никуда дынные в PL/SQL блоке...


у antonkashin не в блоке ("вызов функции в select ")

ps
в my_sql ,busdays(st_dt, end_dt) отработало бы

....
stax
28 май 19, 11:49    [21895511]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции в select  [new]
merch
Member

Откуда:
Сообщений: 170
а нужна ли тут функция..
28 май 19, 14:12    [21895714]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить