powered by simpleCommunicator - 2.0.31     © 2024 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Нужна книга по изучению PL/SQL
67 сообщений из 67, показаны все 3 страниц
Нужна книга по изучению PL/SQL
    #40085182
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, посоветуйте идеальный на ваш взгляд учебник, для изучения PL/SQL.
Желательно, чтобы при изучении создавался какой-то проект, было максимум программирования.

Кстати, может вам попадались такие учебники, где изначально создаются таблицы и уже основываясь на них создавать какие-либо блоки, функции, процедуры и так далее.

Если есть видео уроки, то можно тоже глянуть. Но предпочтительно книга, хоть она и кажется бездушной, но в большей части, она более точная чем мысли на видео.
Купил как-то курс по PL/SQL... Спустил деньги просто так.
Почему так дофига уроков по Java, Python, JS, а по PL/SQL материала настолько мало, что его реально трудно отсеять. Условно, учи из того что есть. Хотя раньше, наверное так и было, а нам молодежи, все мало.

Ребят, надеюсь на ваш отклик.
Люди которые хотят вставить свои три копейки и не дать совета, проходите мимо, только потратите свое время и репутацию (буду отправлять жалобу).

Я может плохо прошерстил этот форум, но почему это не закреплённый вопрос, он ведь тоже часто задаётся. Видел ниже, один скинул книгу 90 го года, другой шутки шутит. Форум умер что ли ?
Странно.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085186
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL/SQL User Guide and Reference.
PL/SQL Packages and Types Reference.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085197
iehf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Steven Feuerstein, Oracle PLSQL Programming, 2014
Donald J. Bales (auth.), Beginning Oracle PL/SQL, 2015
Задворьев И.С., Язык PL-SQL., 2017
Saurabh K. Gupta, Advanced Oracle PL/SQL Developer’s Guide [2 ed.], 2016
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085235
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iehf,

Огромное спасибо за этот список книг.
Какая больше всего понравилась по содержанию и какую бы отметили самой лучшей для новичков среди перечисленных ?
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085236
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, спасибо большое. Да, документацию читать тоже нужно, согласен.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085255
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iehf
Задворьев И.С., Язык PL-SQL., 2017

Решил посмотреть, что это за книга такая?
http://blog.parvenu.ru/sql/2017-Задворьев И. С. - Язык PL_SQL-good.pdf

Забавно стало уже на первой странице текста (стр. 3)

автор (1)"PL/SQL — «Procedural Language extensions to the Structured Query Language»,
что переводится как «Процедурные языковые расширения для языка SQL».
И откуда автор взял такую цитату?
Может из какой-то книжки издательства "Лори", которое славилось шершавым языком любительского перевода?

Документация по Oracle19c, Oracle 11g R2 пишет короче:
"PL/SQL, the Oracle procedural extension of SQL"

В документации по Oracle8i, Oracle10gR2 формулировка длиннее:
"PL/SQL, Oracle’s procedural extension of SQL, is an advanced fourth-generation programming language (4GL)."

В документации по Oracle8 формулировка длинная, но короче 8i:
PL/SQL is Oracle’s procedural extension to SQL, the standard database access language.

В документации по Oracle7 формулировка еще длиннее:
"PL/SQL is Oracle Corporation's procedural language extension to SQL, the standard data access language for relational databases."

Хотя это не так уж важно, но точность никогда не бывает лишней.

автор (2)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
-- Функция на языке Oracle PL/SQL Функция на языке PL/pgSQL PostgreSQL
CREATE FUNCTION F1 RETURN INT AS
BEGIN
 FOR r IN (SELECT * FROM tab1) LOOP
 UPDATE tab2 SET at3=r.at2;
 END LOOP;
 RETURN 1;
END;



О-ё-ёй.
Вот это код!
Вот это функция!
Её цель разрушить данные таблицы tab2?
Или для того, чтобы создать бесполезную нагрузку на базу данных?

И функция выполняющая изменение данных - это плохой стиль программирования.
Разве нет?

автор (3)PL/SQL, в отличие от Java, Python или C++, не используется для
разработки математических приложений, игр и т. п.
Это специфичный язык программирования третьего поколения , предназначенный
для работы с базами данных Oracle прямо в ядре сервера Oracle.

Странно, а Oracle Corporation считает, что PL/SQL - это язык четвёртого поколения:
"PL/SQL, . . . is an advanced fourth-generation programming language ( 4GL )." (см. выше)

Мда-а-а-а-а уж

Я бы не рекомендовал такую книгу для серьезного изучения языка PL/SQL.
Пока это выглядит, как какое-то юмористическое издание :-)

Одну страницу прочитал.
Завтра попробую почитать дальше.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085259
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus,

Спасибо за комментарий.
Начал я с документации всё-таки.
Честно говоря, надо было начать с неё ещё очень и очень давно...
Жаль что потратил очень много времени на поиски "Волшебной таблетки!".
В итоге, все сводится к документации. Единственный плюс видео это визуализация того, о чем идет речь. Но порой, под эти видео начинаю засыпать......
Под документации, книги - нет.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085260
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus,

Думаю что было бы круто, в будущем тут запилить отдельную тему касательно обучения.
Если будет на это все время, обязательно вернусь к этому вопросу, примерно через год, а люди с опытом побольше добьют тему.
Нужна ветка :) короче.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085261
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro,

Steven Feuerstein, Oracle PLSQL Programming - это классика.
Очень хорошая книга.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085262
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не четал, но осуждаю!
SQL*Plus
iehf
Задворьев И.С., Язык PL-SQL., 2017

Решил посмотреть, что это за книга такая?
http://blog.parvenu.ru/sql/2017-Задворьев И. С. - Язык PL_SQL-good.pdf

Забавно стало уже на первой странице текста (стр. 3)

автор (1)"PL/SQL — «Procedural Language extensions to the Structured Query Language»,
что переводится как «Процедурные языковые расширения для языка SQL».

И откуда автор взял такую цитату?
Может из какой-то книжки издательства "Лори", которое славилось шершавым языком любительского перевода?

Документация по Oracle19c, Oracle 11g R2 пишет короче:
"PL/SQL, the Oracle procedural extension of SQL"

В документации по Oracle8i, Oracle10gR2 формулировка длиннее:
"PL/SQL, Oracle’s procedural extension of SQL, is an advanced fourth-generation programming language (4GL)."

В документации по Oracle8 формулировка длинная, но короче 8i:
PL/SQL is Oracle’s procedural extension to SQL, the standard database access language.

В документации по Oracle7 формулировка еще длиннее:
"PL/SQL is Oracle Corporation's procedural language extension to SQL, the standard data access language for relational databases."

Хотя это не так уж важно, но точность никогда не бывает лишней.

автор (2)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
-- Функция на языке Oracle PL/SQL Функция на языке PL/pgSQL PostgreSQL
CREATE FUNCTION F1 RETURN INT AS
BEGIN
 FOR r IN (SELECT * FROM tab1) LOOP
 UPDATE tab2 SET at3=r.at2;
 END LOOP;
 RETURN 1;
END;



О-ё-ёй.
Вот это код!
Вот это функция!
Её цель разрушить данные таблицы tab2?
Или для того, чтобы создать бесполезную нагрузку на базу данных?

И функция выполняющая изменение данных - это плохой стиль программирования.
Разве нет?

автор (3)PL/SQL, в отличие от Java, Python или C++, не используется для
разработки математических приложений, игр и т. п.
Это специфичный язык программирования третьего поколения , предназначенный
для работы с базами данных Oracle прямо в ядре сервера Oracle.

Странно, а Oracle Corporation считает, что PL/SQL - это язык четвёртого поколения:
"PL/SQL, . . . is an advanced fourth-generation programming language ( 4GL )." (см. выше)

Мда-а-а-а-а уж

Я бы не рекомендовал такую книгу для серьезного изучения языка PL/SQL.
Пока это выглядит, как какое-то юмористическое издание :-)

Одну страницу прочитал.
Завтра попробую почитать дальше.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085277
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro
Купил как-то курс по PL/SQL... Спустил деньги просто так.

Что за курс?
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085289
Фотография rf_mail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro,

Mon cheri
ветка обучения
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085313
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro
посоветуйте идеальный на ваш взгляд учебник, для изучения PL/SQL.

https://www.combook.ru/product/10337689/
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085354
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://www.combook.ru/product/11304086/ Oracle PL/SQL за 10 минут
https://www.combook.ru/product/11304086/

В книге даются простые и практические ответы на вопросы, требующие быстрого решения.
Этот краткий справочник состоит из 26 уроков. Потратив не более 10 минут на каждый (или даже меньше!),
вы научитесь всему, что требуется знать, чтобы выгодно пользоваться языком PL/SQL в работе с СУБД Oracle.

Вот это я понимаю!

Код: plsql
1.
2.
3.
4.
5.
SQL> SELECT ROUND(26 * 10 / 60, 2) AS hours FROM dual;

     HOURS
----------
      4,33


4 часа 20 минут и научился всему PL/SQL!

А мы тут корячимся месяцами и годами... :-)
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085421
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro,

Мне очень помогла книга
Скотт Урман: Oracle 9i: Программирование на языке PL/SQL

вот сейчас посмотрел, после вышло издание Oracle10g: Программирование на языке PL/SQL . Правда я её не открывал, не знаю что там добавили / убрали
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085422
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085426
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S.

найти PDF в интернете не проблема, но бумажная всё-же лучше.
поискал для вас

на сайте books.ru при поиске вот эта вроде бы была "в продаже"
https://www.books.ru/books/oracle-database-10g-programmirovanie-na-yazyke-plsql-525872/?show=1
8.65 EURO
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085453
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro
Купил как-то курс по PL/SQL... Спустил деньги просто так

Расскажи про курс, другим будет полезно знать
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085461
iehf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro
iehf,

Огромное спасибо за этот список книг.
Какая больше всего понравилась по содержанию и какую бы отметили самой лучшей для новичков среди перечисленных ?

Классика
Steven Feuerstein, Oracle PLSQL Programming, 2014
на русском есть:
Фейерштейн С., Прибыл Б. Oracle PL-SQL для профессионалов [6-е ed.]
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085464
iehf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iehf
oraclepro
iehf,

Огромное спасибо за этот список книг.
Какая больше всего понравилась по содержанию и какую бы отметили самой лучшей для новичков среди перечисленных ?

Классика
Steven Feuerstein, Oracle PLSQL Programming, 2014
на русском есть:
Фейерштейн С., Прибыл Б. Oracle PL-SQL для профессионалов [6-е ed.]

вот тоже ничего так:
Benjamin Rosenzweig, Elena Rakhimov Prentice Hall Professional Oracle, Oracle PL/SQL by Example [5 ed.], 2015
Michael McLaughlin, Oracle Database 12c PL/SQL Programming [1 ed.], 2014
да много еще, выбор есть
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085586
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроик Семён, приветствую. Огромное Вам спасибо за информацию.
Будет стоять в очереди на прочтение.
Сейчас начал читать документацию Oracle, ну что сказать, информации уйму, но в книгах немного другой подход (полегче наверное).
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085588
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar,

Приветствую. Покупал тут: https://prime-soft.biz/courses/plsql
Я в буквальном смысле потратил очень много времени на освоение, и честно скажу "НЕ-ПО-НЯ-ТНО".
Смотрел урок, пересматривал, и снова.
Возможно уроки нормально будут восприниматься тогда, когда уже будет некая база знаний.


Могу накидать ссылки, без данных моей учетки под которой нужно логинится к БД для того чтобы проходить эти уроки.
Почему без данных моей учетки? -> я бы хотел оставаться анонимным, хотя бы какое-то время, пока мне не будет совсем уж все-равно.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085589
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
oraclepro,

отвечу на свое сообщение:
авторЯ в буквальном смысле потратил очень много времени на освоение, и честно скажу "НЕ-ПО-НЯ-ТНО".
в итоге я не осилил, и сдался на 4-м уроке.
11200 рублей в помойку.
Хотя знаете...опять же, всё зависит от человека.
Но, я бы не рекомендовал начинать с этих видео в самом начале.
Лучше уж просто посвятить время на чтение книг/документаций, чем смотреть эти видео.
Да книги/документации бездушные, но вы знаете какой хороший эффект запоминания информации в отличии от тех же видеоуроков.
Но что больше всего меня подтолкнуло купить видеоуроки, то, что я сразу видел куда мне тыкаться, как это работает, ну и то что они были на Русском языке.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085590
oraclepro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar,

Ответил.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085669
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oraclepro
Gallemar,

Ответил.

Спасибо. Можете попробовать курс Игоря Мирончика, он староват, но довольно хорошо и детально объяснен.
На YT ищется без проблема.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085703
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я начал в свое время с firststeps:
https://firststeps.ru/sql/oracle/oracle1.html
Это , конечно, древний-древний оракл, но почти все актуально и сейчас

потом документация(концепции), потом кайт
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40085764
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
legg
я начал в свое время с firststeps:
https://firststeps.ru/sql/oracle/oracle1.html
Это , конечно, древний-древний оракл, но почти все актуально и сейчас
Да.
Написано грамотно и нескучно.
С примерами для Oracle 8i (8.1.5)

Интересно, кто автор?
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40086643
legg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus
legg
я начал в свое время с firststeps:
https://firststeps.ru/sql/oracle/oracle1.html
Это , конечно, древний-древний оракл, но почти все актуально и сейчас
Да.
Написано грамотно и нескучно.
С примерами для Oracle 8i (8.1.5)

Интересно, кто автор?

на главной странице есть закладка авторы. Летучий Сергей Валерьевич
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40086651
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В дополнение к этой книге 22349886 когда-то очень помог Help по Oracle 8 (freeware by Nick E. Geht, Russia, Omsk, 1999).
Во многом было удобнее находить инфу, чем даже гуглением
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40086654
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выкладываю короче, вдруг пригодится.
А в интернете, возможно, уже и не найти
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40086655
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40086656
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
последний кусок
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133101
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Только сейчас заметил этот топик, решил ответить пользователю SQL*Plus
по всем пунктам.

автор1) "PL/SQL — «Procedural Language extensions to the Structured Query Language»,
что переводится как «Процедурные языковые расширения для языка SQL».

И откуда автор взял такую цитату?
Может из какой-то книжки издательства "Лори", которое славилось шершавым языком любительского перевода?
== Цитату я взял из книги Steven Feuerstein. Oracle PL/SQL Programming:
https://www.oreilly.com/library/view/oracle-plsql-programming/0596003811/ch01.html

автор2) Функция на языке Oracle PL/SQL Функция на языке PL/pgSQL PostgreSQL

О-ё-ёй.
Вот это код!
Вот это функция!
Её цель разрушить данные таблицы tab2?
Или для того, чтобы создать бесполезную нагрузку на базу данных?
== Цель приведения двух вариантов функции - показать сходство
синтаксических конструкций языков PL/SQL в Oracle и PL/pgSQL в PostgreSQL

автор3) PL/SQL, в отличие от Java, Python или C++, не используется для
разработки математических приложений, игр и т. п.
Это специфичный язык программирования третьего поколения, предназначенный
для работы с базами данных Oracle прямо в ядре сервера Oracle.

Странно, а Oracle Corporation считает, что PL/SQL - это язык четвёртого поколения:
"PL/SQL, . . . is an advanced fourth-generation programming language (4GL)." (см. выше)

== Tom Kyte обосновывает, что PL/SQL относится к 3 generation (3G):
https://asktom.oracle.com/pls/apex/asktom.search?tag=plsql-3gl


Рекомендую мою книгу прочитать полностью, она написана по итогам объемной
практики разработки на PL/SQL, также постарался учесть опыт
преподавания в течение 15 лет.

Взять учебно-методическое пособие по PL/SQL можно вот здесь

Если неудобно читать типографский макет с большими полями, то
без полей можно взять вот тут
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133140
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar
oraclepro
Gallemar,

Ответил.

Спасибо. Можете попробовать курс Игоря Мирончика, он староват, но довольно хорошо и детально объяснен.
На YT ищется без проблема.


там довольно много неточностей и много воды. но если не жалко времени, то какое-то представление даст, да.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133162
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
Здравствуйте.

Только сейчас заметил этот топик, решил ответить пользователю SQL*Plus
по всем пунктам.

автор1) "PL/SQL — «Procedural Language extensions to the Structured Query Language»,
что переводится как «Процедурные языковые расширения для языка SQL».

И откуда автор взял такую цитату?
Может из какой-то книжки издательства "Лори", которое славилось шершавым языком любительского перевода?

== Цитату я взял из книги Steven Feuerstein. Oracle PL/SQL Programming:
https://www.oreilly.com/library/view/oracle-plsql-programming/0596003811/ch01.html
Понятно.
Feuerstein не удосужился привести точное определение из документации.
Вы взяли цитату из его книги, тоже не проверив определение термина по документации.
И перевели его "шершавым языком любительского перевода".
В результате получилось то, что получилось. :-(

Повторю ещё раз:
"Хотя это не так уж важно, но точность никогда не бывает лишней."
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133166
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если уж про точность - посмотрите на заглавные буквы в начале каждого английского слова.
PL/SQL — Procedural Language extensions to the Structured Query Language
Это - не определение. Это - расшифровка аббревиатуры.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133182
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
Если уж про точность - посмотрите на заглавные буквы в начале каждого английского слова.
PL/SQL — Procedural Language extensions to the Structured Query Language
Это - не определение. Это - расшифровка аббревиатуры.

А с чего вы взяли что в расшифровке именно extension s , а не как extension?
И почему " to SQL", а не " of SQL"?

P.S. Точность по заглавным буквам слов - это что-то новое.
Очень похоже на "точное гадание по желудям" :-)
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133187
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714

автор2) Функция на языке Oracle PL/SQL Функция на языке PL/pgSQL PostgreSQL
автор (2)
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
-- Функция на языке Oracle PL/SQL Функция на языке PL/pgSQL PostgreSQL
CREATE FUNCTION F1 RETURN INT AS
BEGIN
 FOR r IN (SELECT * FROM tab1) LOOP
    UPDATE tab2 SET at3=r.at2;
 END LOOP;
 RETURN 1;
END;


О-ё-ёй.
Вот это код!
Вот это функция!
Её цель разрушить данные таблицы tab2?
Или для того, чтобы создать бесполезную нагрузку на базу данных?
== Цель приведения двух вариантов функции - показать сходство
синтаксических конструкций языков PL/SQL в Oracle и PL/pgSQL в PostgreSQL

Рассмотрим приведенный выше вариант функции F1 .
1) Выполняется цикл по всем строкам таблицы tab1
2) Для каждой очередной выбранной строки таблицы tab1 выполняется команда UPDATE:
Атрибуту at3 таблицы tab2 присваивается текущее значение поля at2 записи r (r.at2).
Поскольку в команде UPDATE отсутствует фраза WHERE, изменяется значение at3 во всех строках таблицы tab2 .
3) Результатом выполнения приведенной функции будет изменение значения атрибута at3 во всех строках таблицы tab2
на значение атрибута at2 строки таблицы tab2 , которая была выбрана в цикле последней.

Итого:
п.2 приведет к бесполезной нагрузке на базу данных (в каждом цикле обновляются все строки tab2)
п.3 описывает, какое разрушительное действие на данные таблицы tab2 окажет выполнение функции F1
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133200
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714

автор3) PL/SQL, в отличие от Java, Python или C++, не используется для
разработки математических приложений, игр и т. п.
Это специфичный язык программирования третьего поколения, предназначенный
для работы с базами данных Oracle прямо в ядре сервера Oracle.

Странно, а Oracle Corporation считает, что PL/SQL - это язык четвёртого поколения:
"PL/SQL, . . . is an advanced fourth-generation programming language (4GL)." (см. выше)

== Tom Kyte обосновывает, что PL/SQL относится к 3 generation (3G):
https://asktom.oracle.com/pls/apex/asktom.search?tag=plsql-3gl

Tom Kyte замечательный очень известный специалист по технологиям Oracle.
Но Tom Kyte не является специалистом по классификации языков программирования.

В этой wiki-статье обсуждаются языки 4GL https://en.wikipedia.org/wiki/Fourth-generation_programming_language
В том числе, в качестве примеров в ней приводятся языки PL/SQL и Progress 4GL.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133295
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
Рекомендую мою книгу прочитать полностью, она написана по итогам объемной
практики разработки на PL/SQL, также постарался учесть опыт
преподавания в течение 15 лет.

Взять учебно-методическое пособие по PL/SQL можно вот здесь

Если неудобно читать типографский макет с большими полями, то
без полей можно взять вот тут

Дальше изложение материала пошло лучше, но как-то скачкообразно и хаотично.
(пока дочитал до стр. 39 "Обработка исключений")
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133480
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus, как дочитаете до конца, напишите мне, пожалуйста, замечания и предложения. Замечания сотрудников Oracle CIS в том тексте, что Вы читаете, исправлены. Ваши я обязательно учту во втором издании.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133496
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
SQL*Plus, как дочитаете до конца, напишите мне, пожалуйста, замечания и предложения. Замечания сотрудников Oracle CIS в том тексте, что Вы читаете, исправлены. Ваши я обязательно учту во втором издании.

Хорошо. Но не обещаю, что это произойдет очень скоро.

Кстати!
Можно было бы устроить публичное обсуждение книги, например, через Zoom.
Обсуждение записать, а вы потом на основе видеозаписи внесли бы улучшения, уточнения, дополнения, модернизацию.
Как вам такая идея?

P.S. Посмотрите нашу старую книжку.
Oracle7: Практическое руководство. Москва, "Софтсервис", 1997.

Раздел о PL/SQL в ней небольшой, но может быть всё же найдете, что-то полезное.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133519
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714,

не читал (но файл сохранил)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
--в Oracle SQL до версии Oracle 12c максимальная длина CHAR была до 2000 байт
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SQL> ed
Wrote file afiedt.buf

  1  <<m>>
  2  declare
  3   v char(32001) :='a';
  4  begin
  5   dbms_output.put_line(v);
  6* end m;
SQL> /
a

PL/SQL procedure successfully completed.

SQL>



такой блок считал именованным

.....
stax
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133520
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
konaz_714,

не читал (но файл сохранил)

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
--в Oracle SQL до версии Oracle 12c максимальная длина CHAR была до 2000 байт
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SQL> ed
Wrote file afiedt.buf

  1  <<m>>
  2  declare
  3   v char(32001) :='a';
  4  begin
  5   dbms_output.put_line(v);
  6* end m;
SQL> /
a

PL/SQL procedure successfully completed.

SQL>



такой блок считал именованным

В чем суть вашего замечания?

В "именовании" безымянных блоков?
в размере переменной типа char?
что-то другое?
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133544
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторПосмотрите нашу старую книжку.
Oracle7: Практическое руководство. Москва, "Софтсервис", 1997.

Раздел о PL/SQL в ней небольшой, но может быть всё же найдете, что-то полезное.

Google пишет - за доступом к файлу обратитесь к владельцу
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133557
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
авторПосмотрите нашу старую книжку.
Oracle7: Практическое руководство. Москва, "Софтсервис", 1997.

Раздел о PL/SQL в ней небольшой, но может быть всё же найдете, что-то полезное.

Google пишет - за доступом к файлу обратитесь к владельцу
Google модернизировал URL.

Исправил ссылку.
Теперь должно быть всё хорошо с доступом.

Проверьте, пожалуйста.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133559
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL*Plus, скачивается, все отлично.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133570
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему-то нигде не пишут в подобных книжках о том, что нельзя доверять значениям возвращаемым в out - параметрах,
даже если они nocopy, вы возникновении не перехватываемой в вызываемой процедуре ошибки.

Кроме того, в общем, выглядит как устаревшая до выхода, ориентация на версию 11.2
В современных версиях pl/sql набрал заметное количество отличий, в области организации циклов, итерации массивов и инициализации рекордов, достойных необходимого упоминания.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133592
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby
почему-то нигде не пишут в подобных книжках о том, что нельзя доверять значениям возвращаемым в out - параметрах,
даже если они nocopy, вы возникновении не перехватываемой в вызываемой процедуре ошибки.

Кроме того, в общем, выглядит как устаревшая до выхода, ориентация на версию 11.2
В современных версиях pl/sql набрал заметное количество отличий, в области организации циклов, итерации массивов и инициализации рекордов, достойных необходимого упоминания.


По поводу out-параметров - посмотрите, пожалуйста, 113 страницу. Вы это имели в виду?
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133602
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714,

там чепуха, сумбурный текст, не отвечающий формальному описанию, который лучше вообще выбросить.
ну, или заменить на аккуратный.

Он вводит в заблуждение, гарантируя, что значение переменной- приёмника out-параметра останется неизменным, что не соответствует формальным обещаниям, которые pl/sql заявляет в этом вопросе.
(Хотя, вполне возможно, именно это заблуждение калькой снято с бага в документации)
И ваш текст вообще не упоминает поведения в таком случае для out nocopy.

Во всех случаях возникновения ошибки, до присвоения возвращаемого значения out-параметру или после,
фактическое содержание переменной-приемника не гарантируется никак .

Оно может быть вообще любым - остаться в своем исходном значении, очиститься до null, содержать последнее присвоенное в процедуре значение или содержать некий случайный мусор.
Пользователю pl/sql предлагается считать, что он может содержать что угодно, даже если тот в своих экспериментах, как ему кажется, надежно, наблюдает детерминированное поведение.

Суть дела в том, что вы не должны, не имеете права использовать содержание переменной-приемника out-параметра,
каким бы оно ни оказалось фактически, для оценки произошедшего внутри процедуры, как и рассчитывать на то, что значение приемника останется неизменным.

То есть, если кто-то думает, что вот сейчас я присвою пять значению выходного параметра и выброшу свою ошибку общего плана,
то обработчик ошибки в вызывающей процедуре сумеет понять, что точно произошло и как с этой общей ошибкой обходиться,
то Oracle предлагает даже не начинать размышлять в таком стиле, даже если вы всегда получаете пять, или,
наоборот, всегда получаете Null в переменной приемнике, или всегда видите, что исходное значение в переменной-приёмнике осталось неизменным.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133603
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторОно может быть вообще любым - остаться в своем исходном значении, очиститься до null, содержать последнее присвоенное в процедуре значение или содержать некий случайный мусор.

Скажите, а можно про это где-то прочитать в авторитетных источниках?
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133606
Melkomyagkii_newbi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
авторОно может быть вообще любым - остаться в своем исходном значении, очиститься до null, содержать последнее присвоенное в процедуре значение или содержать некий случайный мусор.


Скажите, а можно про это где-то прочитать в авторитетных источниках?

+1
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133609
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
авторОно может быть вообще любым - остаться в своем исходном значении, очиститься до null, содержать последнее присвоенное в процедуре значение или содержать некий случайный мусор.

Скажите, а можно про это где-то прочитать в авторитетных источниках?
Да-да, а то ваше эмоциональное сумбурное изложение "на пальцах", но без примеров может кого угодно запутать.
Пока я понял, что в переменной для параметра OUT NOCOPY может быть случайное значение при аварии в вызываемой процедуре.
И ничего странного я в этом не обнаружил.

"Все почти с ума свихнулись, даже, кто безумен был..." (с) В. Высоцкий
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133619
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
авторОно может быть вообще любым - остаться в своем исходном значении, очиститься до null, содержать последнее присвоенное в процедуре значение или содержать некий случайный мусор.


Скажите, а можно про это где-то прочитать в авторитетных источниках?
о как, это ничего, что книжку вы пишите, а не я. Я же не спрашиваю, в каких авторитетных источниках вы взяли содержание 113 страницы, просто вижу, что чепуха. С полным отсутствием эмоций.

И даже мне ( ) oracle не только не обещал легкого последующего доступа к своим ранее выложенным white papers,
но и не давал обещания их хранить у себя сколько-нибудь долгое время.

Была отдельная статья именно на эту тему, как раз во времена 11й версии.
Точного названия и ссылки у меня нет, по памяти смысл названия был в духе "о гарантиях, которые предоставляет pl/sql"
Цитировал я по памяти, с учетом того, что статье точно больше 10 лет уже.

К счастью, именно этот момент они, наконец, включили в сжатом виде в документацию:

https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-subprograms.html#GUID-518B8827-26CC-4734-B799-ACB038185638

If the subprogram ends with an exception, then the value of the actual parameter is undefined .
В данном случае это надо понимать именно в смысле отсутствия каких бы то ни было гарантий на содержимое переменной - приемника.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133622
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
была еще статья 2003 года времен 10й версии от Charles Wetherell (ещё авторитетнее уже дальше некуда),
"Freedom, Order, and PL/SQL Optimization"

Во многих отношениях полезная, и прилегающая, там в широком плане рассматривается вопрос влияния исключений на порядок выполнения кода, но именно интересующего в моменте полезного фрагмента текста, за 30 секунд я не нашел.
Сорри, на этом поиски я прекращаю, в надежде, что ссылки на официальную документацию достаточно.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133624
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
К счастью, именно этот момент они, наконец, включили в сжатом виде в документацию:

https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-subprograms.html#GUID-518B8827-26CC-4734-B799-ACB038185638

If the subprogram ends with an exception, then the value of the actual parameter is undefined .

В данном случае это надо понимать именно в смысле отсутствия каких бы то ни было гарантий на содержимое переменной - приемника.
Очень хорошо, что вы это подчеркнули.

И приведенная вами документация по Oracle 21c доходчиво описывает ситуацию:
9.7.3 Subprogram Parameter ModesRegardless of how an OUT or IN OUT parameter is passed:
  • If the subprogram exits successfully, then the value of the actual parameter is the final value assigned to the formal parameter. (The formal parameter is assigned at least one value—the initial value.)
  • If the subprogram ends with an exception, then the value of the actual parameter is undefined.
То же самое написано и в документации по Oracle 19c , Oracle 11g R2 .

В документации по Oracle 10g R2 пишут то же самое, но немного другими словами:
"If you exit a subprogram successfully, PL/SQL assigns values to the actual parameters.
If you exit with an unhandled exception, PL/SQL does not assign values to the actual parameters."


В документации по Oracle 9i R2 и Oracle 8i пишут то же самое, но немного другими словами:
"If you exit a subprogram successfully, PL/SQL assigns values to the actual parameters.
However, if you exit with an unhandled exception, PL/SQL does not assign values to the actual parameters."

If you exit a subprogram successfully, PL/SQL assigns values to the actual parameters.
However, if you exit with an unhandled exception, PL/SQL does not assign values to the actual parameters.

В итоге имеем давным-давно описанное в документации поведение:

(1) Если подпрограмма заканчивается нормально,
фактическое значение параметра равно последнему значению,
присвоенному формальному параметру.

(2) Если подпрограмма заканчивается с возбуждением исключения,
фактическое значение параметра не определено.

По-моему, вполне логичное поведение.

Спасибо, что обратили на него наше внимание.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133661
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL*Plus

....
However, if you exit with an unhandled exception, PL/SQL does not assign values to the actual parameters.
....

Вот этого не "другими словами".
Это буквально то, что порождает 113-ые страницы.
Ясно, что человеку образованному, и с большим опытом, понять этого никакой возможности нет.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133679
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-subprograms.html#GUID-518B8827-26CC-4734-B799-ACB038185638
If the subprogram ends with an exception, then the value of the actual parameter is undefined .
В данном случае это надо понимать именно в смысле отсутствия каких бы то ни было гарантий на содержимое переменной - приемника.
А парой абзацев ниже:
When an OUT or IN OUT parameter is passed by reference, the actual and formal parameters refer to the same memory location. Therefore, if the subprogram changes the value of the formal parameter, the change shows immediately in the actual parameterА это надо понимать как гарантию на содержимое переменной - приемника.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133738
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
...
А парой абзацев ниже:
When an OUT or IN OUT parameter is passed by reference, the actual and formal parameters refer to the same memory location. Therefore, if the subprogram changes the value of the formal parameter, the change shows immediately in the actual parameter
А это надо понимать как гарантию на содержимое переменной - приемника.

Может быть. При условии, что хинт nocopy действительно отработал и привел к передаче по ссылке.
Я хорошо помню, как кто-то меня макал в неумение опознавать это на глаз

Но такая гарантия мгновенной изменчивости приемника не имеет ничего общего с обещанием всегда оставить входной параметр в исходном значении при возникновении ошибки.

PS
Мне правда жаль, что у меня потеряна та статья, на которую я умственно ссылался.
А Уизерела надо будет перечитать, при удобном случае.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133740
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я не знаю, с какой легкостью "Freedom, Order, and PL/SQL Optimization" сейчас отыскивается на OTN,
поэтому приложу файл для желающих ознакомиться, если кто-то не читал ранее.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133753
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
Elic
А это надо понимать как гарантию на содержимое переменной - приемника.
Может быть. При условии, что хинт nocopy действительно отработал и привел к передаче по ссылке.
Обрати внимание, что ни я, ни документация в этом месте не упоминаем nocopy.
"is passed by reference" - это значит, что хинт nocopy сработал.
booby
Я хорошо помню, как кто-то меня макал в неумение опознавать это на глаз
Я такую ерунду не помню. Я просто знаю, что документация давным-давно разъясняет, когда хинт "игнорируется" (просто из-за того, что нет чёткого "memory location").
booby
Но такая гарантия мгновенной изменчивости приемника не имеет ничего общего с обещанием всегда оставить входной параметр в исходном значении при возникновении ошибки.
Ты начинаешь противоречить сам себе (и документации). initial<>undetermined

Я бы эту детскую боязнь сравнил с древней страшилкой, что когда-нибудь '' is null станет false.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133757
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что касается качества документации, то она, к сожалению, только ухудшается. Многие упоминания про undetermined results из неё пропадают в последних версиях.
Или взять по той же ссылке дебильный пример:
>=11gR2Formal OUT and IN OUT parameters can be returned in any order. In this example, the final values of x and y are undefined:
Код: plsql
1.
2.
3.
4.
5.
CREATE OR REPLACE PROCEDURE p (x OUT INTEGER, y OUT INTEGER) AS
BEGIN
  x := 17; y := 93;
END;
/

На самом деле тут должно было быть приблизительно следующее:Может в какой-нибудь версии исправятFormal OUT and IN OUT parameters can be returned in any order. In this example, the final values of z are undefined:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE OR REPLACE PROCEDURE p (x OUT INTEGER, y OUT INTEGER) AS
BEGIN
  x := 17; y := 93;
END;
/
declare
  z integer;
begin
  p(z, z);
  dbms_output.put_line(z);
end;
/

Я лет 10 назад много раз убеждал Стивена, что это именно "are undefined". Похоже, что он согласился и донёс это тогда до Bryn Llewellyn. Но в документацию это попало в такой вот уё$ищной форме :(
То же касается out-ов в EI.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133761
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Я бы эту детскую боязнь сравнил с древней страшилкой, что когда-нибудь '' is null станет false.

Да, я помню такую оговорку в документации. Возможно, отражающую былые споры.
По некоторому размышлению, пришел к надежде, что пока оракловым дедам удается игнорировать оптимизацию местного образования,
этого не произойдет. По крайней мере, не при их жизни.
Такой заход обязан порождать две конкатенации вместо одной.
А чтобы умножать сущности, нужно быть молодым и рьяным.

booby
Ты начинаешь противоречить сам себе (и документации). initial<>undetermined

Контекст обсуждения задан предложенной к изучению 113ой страницей книжки, ссылка на которую на предыдущей странице.
Кстати, речь не идет об undetermined. Значение как-то всегда determined в конкретном вычислении в том отношении, что какое-то точно есть.
Но оно undefined в смысле наличия гарантий на то, как именно должно быть описано поведение системы времени выполнения,
следуя которому возможно не просто предсказать, какое оно будет, а предсказать специально в целях использования для построения
вокруг этого поведения некоторой прикладной логики.
Так получилось, что где-то в районе7-8 года, я сам страдал подобными идеями.
Но вовремя попались под руку пара статей, одну из которых я выложил в предыдущем посте.

Если ты случайно ее не читал, специально посмотри.
Там и текст качественный, и автор - "главный по тарелочкам" в области pl/sql.
То есть, попросту - научный руководитель проекта pl/sql.


Elic

...
"is passed by reference" - это значит, что хинт nocopy сработал.
...
Я просто знаю, что документация давным-давно разъясняет, когда хинт "игнорируется" (просто из-за того, что нет чёткого "memory location").

Процедура с nocopy хинтом пишется один раз, а используется многократно и в разных условиях.
В одних условиях вызова передача параметра произойдет по ссылке, в других будет образована копия в созданной для этой цели временной переменной.
Если я правда собрался натягивать вокруг "гарантий" логику, я должен быть уверен, что в каждом случае, когда мне приспичило ей воспользоваться, она точно работает.
Ура, я понял тогда, в интересовавших меня случаях, она точно не работает.

нет чёткого "memory location" - классная формулировка 👍

ElicFormal OUT and IN OUT parameters can be returned in any order. In this example, the final values of z are undefined:
Это про алиасинг. Тема хорошая, сам попадал "по молодости".
Он может и без Out параметров возникать.
"не ваше дело, в какой последовательности формируются out-параметры" - лишь вишенка на этом торте.

Вот тут Коннор Макдоналд показывает примеры, выводящие на соседнюю тему - супер-агрессивность оптимизатора кода,
например, в части оптимизации выражений.
Не могу похвастать, что это вызывает у меня восторг до степени хлопанья в ладоши.
https://connor-mcdonald.com/2019/04/16/pl-sql-dont-mix-and-match-scope/

(Я не прочитал, что поэтому поводу есть у автора обсуждаемой книжки)
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40133765
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
Процедура с nocopy хинтом пишется один раз, а используется многократно и в разных условиях.
В одних условиях вызова передача параметра произойдет по ссылке, в других будет образована копия в созданной для этой цели временной переменной.
Если я правда собрался натягивать вокруг "гарантий" логику, я должен быть уверен, что в каждом случае, когда мне приспичило ей воспользоваться, она точно работает.
Тут всё просто. nocopy является частью контракта. Если вызывающий хочет получить от неё "всё", то просто должен соблюсти условия.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40134034
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Предлагаю вернуться к 113 странице обсуждаемой книги.

Сейчас там написано вот так:

авторОсновное отличие режима передачи OUT от режима IN OUT заключается в том, что OUT-параметр становится неинициализированным при передаче внутрь процедуры или функции, то есть то значение, которое имела во внешнем блоке переменная-фактический параметр, теряется (становится равным NULL). Это верно во всех случаях, за исключением ситуации, когда внутри процедуры или функции инициируется необработанное в ней исключение. Тогда во внешнем блоке у переменной-фактического параметра для формального OUT-параметра сохранится то ее значение, которое было до передачи. У фактических параметров для формальных IN OUT-параметров значение в NULL не сбрасывается. Если значение фактического параметра внутри программы не меняли, то и после завершения вызова программы оно будет таким же, каким оно было до передачи в программу. Приведем примеры передачи значений параметров в различных режимах.

Неточность заключается вот в этом месте "Это верно во всех случаях, за исключением ситуации, когда внутри процедуры или функции инициируется необработанное в ней исключение. Тогда во внешнем блоке у переменной-фактического параметра для формального OUT-параметра сохранится то ее значение, которое было до передачи".

Предлагается заменить в рукописи текст на

автор"Это верно во всех случаях, за исключением ситуации, когда внутри процедуры или функции инициируется необработанное в ней исключение. Тогда во внешнем блоке у переменной-фактического параметра для формального OUT-параметра значение не определено".


При желании можно еще расписать the semantics of an OUT parameter is
a) set it to null
b) call procedure
c) upon success, copy the value back out

Когда происходит исключение, 3 шаг не выполняется. При передаче OUT-параметра по ссылке с помощью конструкции NOCOPY это и приводит к неопределенности.

И привести примеры 1 и 4 вот отсюда .
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40134843
konaz_714
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот на всякий случай текст книги по PL/SQL в формате Microsoft Word.
...
Рейтинг: 0 / 0
Нужна книга по изучению PL/SQL
    #40134913
SQL*Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
konaz_714
Вот на всякий случай текст книги по PL/SQL в формате Microsoft Word.

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


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