Гость
Map
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Pl/SQL операция кратности / 24 сообщений из 24, страница 1 из 1
27.11.2021, 12:43
    #40115478
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
Как в pl/sql написать простенький скрипт,в котором в цикле фор идет от 1..6 и в ходе его выполнения,если k кратно 2 то выводится сообщение что k кратно 2,на любом адекватном яп это пишется за минуту,но я ваще хз как кратность в pl/sql показать. k % 2 == 0 не работает,подскажите.
...
Рейтинг: 0 / 0
27.11.2021, 12:46
    #40115480
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
KiraBatya,

mod
...
Рейтинг: 0 / 0
27.11.2021, 13:02
    #40115486
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
AmKad,
именно вот так?
if mod(k,2)
then
dbms_output.put_line('k kratno 2");
end if;
...
Рейтинг: 0 / 0
27.11.2021, 15:57
    #40115515
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
AmKad,

тогда допустим,как в pl/sql сделать операцию И в if,в си-шарпе можно так if(x=2 && x=3) а как в oracle ?
...
Рейтинг: 0 / 0
27.11.2021, 16:13
    #40115520
Никанор Кузьмич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
KiraBatya
AmKad,

тогда допустим,как в pl/sql сделать операцию И в if,в си-шарпе можно так if(x=2 && x=3) а как в oracle ?
Предвидя ваш следующий вопрос - https://docs.oracle.com/database/121/LNPLS/toc.htm
На первое время должно хватить.
...
Рейтинг: 0 / 0
27.11.2021, 18:06
    #40115545
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
Никанор Кузьмич, я был бы конечно очень рад,если бы вы просто ответили на вопрос,не очень хочется сейчас капаться в документации,где хер пойми где находится то что мне нужно
...
Рейтинг: 0 / 0
27.11.2021, 18:50
    #40115552
Никанор Кузьмич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
KiraBatya
не очень хочется сейчас капаться в документации
А мне, наверно, очень хочется? У вас таких вопросов еще миллион будет.
То, что вам нужно, называется "Control Statements", пункт 4 по ссылке выше. Может, программирование - это просто не ваше?
...
Рейтинг: 0 / 0
27.11.2021, 20:01
    #40115560
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
...
Рейтинг: 0 / 0
27.11.2021, 20:51
    #40115570
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
KiraBatya
не очень хочется сейчас капаться в документации,где хер пойми где находится то что мне нужно
Ленивые нахлебники, в принципе не желающие читать документацию, не имеют права на существование задолбали.
...
Рейтинг: 0 / 0
27.11.2021, 22:27
    #40115581
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
Никанор Кузьмич,да что ж вы меня так душите,я же элементарную вещь спросил,а вы мне кинули документацию,это же выглядит максимально глупо с моей стороны,для вас было бы проще просто ответить сюда,с каким-нибудь элементарным примером
...
Рейтинг: 0 / 0
27.11.2021, 22:28
    #40115582
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
KiraBatya
AmKad,
именно вот так?
if mod(k,2)
then
dbms_output.put_line('k kratno 2");
end if;


Код: plsql
1.
2.
3.
4.
if mod(k,2) = 0
then
 dbms_output.put_line('k kratno 2');
end if;
...
Рейтинг: 0 / 0
27.11.2021, 22:35
    #40115583
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
KiraBatya
тогда допустим,как в pl/sql сделать операцию И в if,в си-шарпе можно так if(x=2 && x=3) а как в oracle ?

Код: plaintext
IF X=2 AND X=3
Но это глупость.
Выраженное на любом традиционном языке программирования такое выражение всегда будет давать FALSE.

А как, допустим, в си-шарпе сделать?
Код: plsql
1.
2.
3.
EXCEPTION
   WHEN OTHERS THEN
      RAISE;
...
Рейтинг: 0 / 0
27.11.2021, 23:40
    #40115592
qlost
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
SQL*Plus

Код: plsql
1.
2.
3.
EXCEPTION
   WHEN OTHERS THEN
      RAISE;


Ааааа! Миксер в глаза!
Простите, не удержался. Регулярно встречаю это в коде. У всех работодателей, где бы ни работал.
:''(
...
Рейтинг: 0 / 0
28.11.2021, 00:05
    #40115594
Никанор Кузьмич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
qlost
SQL*Plus

Код: plsql
1.
2.
3.
EXCEPTION
   WHEN OTHERS THEN
      RAISE;



Ааааа! Миксер в глаза!
Простите, не удержался. Регулярно встречаю это в коде. У всех работодателей, где бы ни работал.
:''(
Нашли, чем удивить. У меня на текущем проекте каждая (!) процедура завершается так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure abc ... is
  ...
  leave exception;
begin
  ...
  raise leave;
exception
    ...
  when leave then
    null;
end;

Как тебе такое, Илон Маск?
Досталось от предыдущей команды. Угораем всем отделом. Один чувак работает на проекте уже год, но даже спустя год охреневает каждый раз, когда натыкается.
...
Рейтинг: 0 / 0
28.11.2021, 12:13
    #40115657
KiraBatya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
SQL*Plus,благодарю
...
Рейтинг: 0 / 0
28.11.2021, 14:52
    #40115678
qlost
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
Никанор Кузьмич
Нашли, чем удивить. У меня на текущем проекте каждая (!) процедура завершается так:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
procedure abc ... is
  ...
  leave exception;
begin
  ...
  raise leave;
exception
    ...
  when leave then
    null;
end;

Как тебе такое, Илон Маск?
Досталось от предыдущей команды. Угораем всем отделом. Один чувак работает на проекте уже год, но даже спустя год охреневает каждый раз, когда натыкается.

Да-да-да! У меня тоже такое встречается. Я не пойму, что за стиль такой? Подозреваю, что это какой-то Java-style, ибо встречаю это в пакетах, которые писали наши нынешние джависты, ещё пару лет назад бывшие ораклистами.
Но, если ошибаюсь насчёт "style", да простят меня true джависты. Я это не со зла!
...
Рейтинг: 0 / 0
28.11.2021, 19:03
    #40115731
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
qlost
...
Да-да-да! У меня тоже такое встречается. Я не пойму, что за стиль такой? Подозреваю, что это какой-то Java-style, ибо встречаю это в пакетах, которые писали наши нынешние джависты, ещё пару лет назад бывшие ораклистами.
Но, если ошибаюсь насчёт "style", да простят меня true джависты. Я это не со зла!
Если это java-исты, то они глупые.
На java такое чревато делать из соображений производительности.
...
Рейтинг: 0 / 0
28.11.2021, 19:10
    #40115732
Aleks Niches
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
KiraBatya,


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
BEGIN
    FOR i in 1..6
        LOOP

                IF  MOD(i,2) = 0
                    THEN
                        DBMS_OUTPUT.PUT_LINE ('k = ' || i || ' - Кратно 2 ');
                ELSIF   MOD(i,2) = 1
                        THEN
                            DBMS_OUTPUT.PUT_LINE ('k = ' || i || ' - Не Кратно 2 ');
                END IF;
                
        END LOOP;
                
END;
                        
...
Рейтинг: 0 / 0
28.11.2021, 19:20
    #40115734
qlost
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
Aleks Niches
KiraBatya,


Код: plsql
1.
                ELSIF


?
Остаток от деления на 2 может быть чем-то кроме 0 и 1 ? :)
и NULL-ов мы тут не ожидаем вроде...
...
Рейтинг: 0 / 0
28.11.2021, 21:51
    #40115747
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
qlost
Остаток от деления на 2 может быть чем-то кроме 0 и 1 ? :)
и NULL-ов мы тут не ожидаем вроде...

Вы не поверите...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
SQL> select mod(1/3,2), mod(-1,2), mod(null,2) from dual;

MOD(1/3,2)  MOD(-1,2) MOD(NULL,2)
---------- ---------- -----------
,333333333         -1 <null>

SQL>
...
Рейтинг: 0 / 0
28.11.2021, 22:06
    #40115748
SergiiW
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
andrey_anonymous,

Насколько я понял, вопрос был не про MOD, а про FOR i in 1..6
Как тут i может быть NULL?
...
Рейтинг: 0 / 0
28.11.2021, 22:20
    #40115751
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
SergiiW
andrey_anonymous,
Насколько я понял, вопрос был не про MOD, а про FOR i in 1..6
Как тут i может быть NULL?

С одной стороны, вопрос был
KiraBatya
как кратность в pl/sql показат

С другой - mod может давать результат, отличный от 0 и 1 даже при определённом значении переменных, что делает замечание
qlost
Остаток от деления на 2 может быть чем-то кроме 0 и 1 ?
неадекватным независимо от наличия среди аргументов null.

Кроме того, возможность получить результат mod не из {0, 1} делает представленное решение не вполне корректным, что давало возможность не только продемонстрировать интеллект, но и скорректировать коллегу, продемонстрировав что-то вроде
Код: 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.
declare
  l_arr sys.OdciNumberList := sys.OdciNumberList(-2, -1, 0, 1, 2, 1/3, null);
BEGIN
    FOR i in 1..l_arr.count
        LOOP
	DBMS_OUTPUT.PUT_LINE ( 'k = ' || coalesce(to_char(l_arr(i)), '<null>') || ' - '
	                    || case abs(sign(mod(l_arr(i),2)))
				     when 0 then 'Кратно 2'
				     when 1 then 'Не кратно 2'
				     else 'А фиг его знает'
				   end
				);
        END LOOP;
END;
/
k = -2 - Кратно 2
k = -1 - Не кратно 2
k = 0 - Кратно 2
k = 1 - Не кратно 2
k = 2 - Кратно 2
k = ,3333333333333333333333333333333333333333 - Не кратно 2
k = <null> - А фиг его знает

PL/SQL procedure successfully completed


SQL> 


в меру собственной извращенности.
...
Рейтинг: 0 / 0
28.11.2021, 22:29
    #40115752
qlost
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
Естественно под "тут" я имел в виду приведённый выше конкретный скрипт!
...
Рейтинг: 0 / 0
28.11.2021, 23:54
    #40115759
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pl/SQL операция кратности
andrey_anonymous

в меру собственной извращенности.


Код: 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.
declare
  l_arr sys.OdciNumberList := sys.OdciNumberList(-2, -1, 0, 1, 2, 1/3, null);
BEGIN
    FOR i in 1..l_arr.count
        LOOP
	DBMS_OUTPUT.PUT_LINE ( 'k = ' || coalesce(to_char(l_arr(i)), '<null>') || ' - '
	                    || case
                                 when l_arr(i) is null then 'Who knows'
				 when mod(l_arr(i),2) = 0 then 'Multiple of 2'
				 else 'Not multiple of 2'
                               end
				);
        END LOOP;
END;
/
k = -2 - Multiple of 2
k = -1 - Not multiple of 2
k = 0 - Multiple of 2
k = 1 - Not multiple of 2
k = 2 - Multiple of 2
k = .3333333333333333333333333333333333333333 - Not multiple of 2
k = <null> - Who knows

PL/SQL procedure successfully completed.

SQL>



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


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