|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
booby НеофитSQL, скажи спасибо, что тебе не сильно врут. В "других языках" ни строчке официального библиотечного кода верить нельзя даже приблизительно. Они там просто ничему не соответствуют. Я не пытаюсь обидеть твоего любимого ребенка, поэтому "а у вас негров линчуют" тут не очень подходит. Когда я выпускал header files для MSDN, мы туда только правду размещали. Т.е. за Windows SDK/DDK я ручаюсь, по крайней мере до семерки. С чем запускался мейк для сборки Винды - то и шло всем программистам, без правок. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 18:55 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
booby binary_integer не всегда был машинным .... Библиотечная реализация могда иметь свой взгляд, надо формсы хотя бы 6-е поднимать, чтобы диапазон значений проверить. Хотя в 6-х оно уже может быть и ест 80000000 правильно. Люблю этот форум, узнаю много нового. Booby, вы уверены что "binary_integer не всегда был машинным", или просто так сказали? Например, в версии 7.х, он уже был машинным. Источник: документация версии 7.3 https://docs.oracle.com/pdf/A32536_1.pdf?xd_co_f=30bdac43-db00-4c73-b23f-ab7dceabc8ab ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 19:02 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
env .. типы и подтипы, определённые в пространстве имён пакета sys.standard не обязаны совпадать с типами дефолтного пространства имён. Я не сразу смог прочитать предложение выше, поэтому отвечаю с задержкой. Вы не правы. В случае пакета SYS.STANDARD, о котором идет речь, типы и подтипы пакета обязаны совпадать с типами дефолтного пространства, т.е. не являются локальными для пакета и не требуют указания sys.standard. перед ними. Это особенность этого пакета. Источник: документация Оракл. https://docs.oracle.com/cd/A57673_01/DOC/server/doc/PLS23/ch8.htm ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 19:09 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL Другими словами - поскольку STANDARD/spec содержит некоторые лживые декларации Мастер и МаргаритаЕго послали, чтобы над верою надругался и подвел народ под римские мечи! ... |
|||
:
Нравится:
Не нравится:
|
|||
29.09.2020, 23:43 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL Вячеслав Любомудров Все там нормально И обрабатывается это обычным путем -- этот пакет загружается и компилируется через обычный sqlplus при установке/апгрейде словаря БД Но чувак пытается переложить свой (не знаю, насколько большой) опыт работы с другими языками на [PL/]SQL Это утверждение не сочетается с наличием синтаксических ошибок в SYS.STANDARD. К примеру, Код: plsql 1.
не компилируется по двум причинам, указанным в первом сообщении. Если бы компилировалось, то присваивание Код: plsql 1.
выдавало бы ошибку. Каждый может посмотреть в свой SYS.STANDARD и убедиться что это так, по крайней мере для 11.2. Вы можете привести какое-либо проверяемое обоснование вашего утверждения? А ты уже достал своей пургой, несущейся с умным видом Код: 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 04:27 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, Я не все смог понять в вашем примере, но вижу что вы пользуетесь версией 18 чтобы опровергнуть мои выводы о 11.2. Когда у меня будет доступ к 18/19, я сделаю сравнительный анализ. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 04:42 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL Я не все смог понять в вашем примере, но вижу что вы пользуетесь версией 18 чтобы опровергнуть мои выводы о 11.2. Неофит, чтобы Ваше умное лицо выглядело реально умно - следует все-таки разобраться в вопросе. Вячеслав создал новую, абсолютно пустую БД. Показал, что в ней нет объекта с именем STANDARD. И накатил пакет штатным скриптом. Так, как это делается всегда при ручном создании БД от самых первых версий, в которых появился pl/sql. Чем убедительно показал несостоятельность Ваших измышлизмов относительно сути пакета и невозможности его наката на БД из sql*plus. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 10:41 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
НеофитSQL, НеофитSQL подтипы пакета обязаны совпадать Но есть нюансы.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 11:12 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
SY Stax SY, почему б ораклю не сделать subtype BINARY_INTEGER is INTEGER range '-214748364 8 '..2147483647; ..... stax -214748364 8 это -0. Про +0 и -0 слышал? SY. Про +0 и -0 слышал, но никогдо не использовал еще слышал о +~ / -~ даже как-то нарвался но в 11-версии -2147483648 вполне себе число как и напр -2147483640 для меня ето совсем не важно, но имхо более чесно было б прописать subtype BINARY_INTEGER is INTEGER range '-214748364 8 '..2147483647; ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 13:30 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
andrey_anonymous НеофитSQL Я не все смог понять в вашем примере, но вижу что вы пользуетесь версией 18 чтобы опровергнуть мои выводы о 11.2. Неофит, чтобы Ваше умное лицо выглядело реально умно - следует все-таки разобраться в вопросе. Вячеслав создал новую, абсолютно пустую БД. Показал, что в ней нет объекта с именем STANDARD. И накатил пакет штатным скриптом. Так, как это делается всегда при ручном создании БД от самых первых версий, в которых появился pl/sql. Чем убедительно показал несостоятельность Ваших измышлизмов относительно сути пакета и невозможности его наката на БД из sql*plus. Я вижу, произошла подмена понятий (соломенный аргумент). Но сначала отступление о другом - о ставшей редкой в русскоязычной среде возможности обсуждать разногласия сохраняя деловой тон и уважение к собеседнику. Про мои цели на этом форуме я писал раньше, они достигаются и я узнаю много нового, для меня неочевидного. В свою очередь, у меня иногда получается принести зерно истины, про которое еще вчера были не в курсе некоторые из самых опытных участников форума. Не знаю, известно ли в РФ золотое правило , штука хорошая. Вернусь в тему. Соломенный аргумент - это подмена тезиса разговора другим, очевидно неверным, и затем опровержение этого нового тезиса. Этот прием считается нечистоплотным когда применен намеренно в деловой ситуации, или симптомом недостаточного понимания как вести дискуссию. Мой тезис в самом начале этого сообщения: текст пакета SYS.STANDARD (1)справочный, и (2)написан в псевдокоде. Мне это интересно как разработчику использующему PL/SQL как один из многих языков для выполнения моих задач. Тема недостаточно широко раскрытая в интернете, но интересная мне, поэтому я захотел в нее углубиться. Я использовал несколько доводов, один из которых оказался ошибочным и был опровергнут (довод с полиморфным bitand). То, что этот текст написан на языке отличающемся от стандартного PL/SQL нет сомнений, вторую половину тезиса можно закрыть. Теперь, несколько дней спустя и прочитав примеры от местных старейшин (включая сообщение 2012 года от Вячеслава ибн Владивосток) а также несколько профильных блогов, вижу что текст этого пакета, который содержится в stdspec.sql/stdbody.sql (в ранних версиях Оракла в catalog.sql/catproc.sql) не только присутствует, но и активно используется для начального формирования среды PL/SQL. Кроме того, и это здесь важно - в stdspec.sql можно поменять значение константы, "накатить" его заново, и эта константа изменится в среде PL/SQL. Это говорит о том, что stdspec.sql - не просто свадебный генерал, а как минимум установочный скрипт с синтаксом напоминающим PL/SQL. Как максимум - полноценный PL/SQL с особыми расширениями зарезервированными для STANDARD. Mы обычно понимаем разницу между компилятором и скриптом инсталляции. Если я запустил .msi или .deb или .sh файл на своем компьютере, это еще не значит что "я скомпилировал пакет" - только что я его установил. Даже если я поменял в установочном скрипте константу или две. Чтобы определиться, является ли синтакс stdspec.sql расширением языка PL/SQL или установочным скриптом с похожим синтаксом но с ограниченными возможностями, нужно сначала определиться с критериями оценки, а потом эти критерии испытать. Научный метод, и все такое. Возможные критерии: - кто компилирует stdspec.sql (если штатный компилятор, голос в пользу расширения языка) - языковые возможности доступные в stdspec.sql (если там скудное подмножество PL/SQL, голос в пользу инсталлятора) - количество семантических конфликтов, когда одинаковый код имеет разное значение в stdspec/body, и других местах. и т.д. Также я хочу поблагодарить Вячеслава, который не ограничился "да все там компилится", а написал подробную иллюстрацию процесса специально для "neofit" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 16:03 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
Stax но имхо более чесно было б прописать subtype BINARY_INTEGER is INTEGER range '-214748364 8 '..2147483647; Было бы еще более честно написать что это кардинально другой тип, как это делается с другими типами, ведь INTEGER это NUMBER, и для подтипов INTEGER/NUMBER нельзя использовать RANGE (ошибка PLS-00572) Например: type BINARY_INTEGER is BINARY32_BASE; но почему-то в версии 11.2 Оракл так не сделал. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 16:18 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL ведь INTEGER это NUMBER Если смотреть по sys.standard, то это NUMBER_BASE(38,0). Но воспользоваться типом NUMBER_BASE нигде кроме как в sys.standard нельзя. НеофитSQL и (2)написан в псевдокоде НеофитSQL написан на языке отличающемся от стандартного PL/SQL нет сомнений Соломенный аргумент для подтверждения тезиса. Если "отличается от стандартного PL/SQL", то конечно это псевдокод, да, логично. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 16:31 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, А до наката standard анонимные блоки с базовыми типами работать будут? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 16:34 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
env НеофитSQL ведь INTEGER это NUMBER Если смотреть по sys.standard, то это NUMBER_BASE(38,0). Но воспользоваться типом NUMBER_BASE нигде кроме как в sys.standard нельзя. Не совсем так. В 11.2 определение выглядит так: subtype BINARY_INTEGER is INTEGER range '-2147483647'..2147483647; В свою очередь INTEGER - подтип NUMBER, и т.д. Примешивать тип NUMBER_BASE к этой конкретной дискуссии нет необходимости. Иначе любое обсуждение типов можно привести к "а там в самом начале _BASE", что ничего не дает. env НеофитSQL и (2)написан в псевдокоде НеофитSQL написан на языке отличающемся от стандартного PL/SQL нет сомнений Соломенный аргумент для подтверждения тезиса. Если "отличается от стандартного PL/SQL", то конечно это псевдокод, да, логично. Не совсем так. Я сказал что он написан в псевдокоде по конкретным причинам, которые были указаны ранее. Во-первых, синтакс отличается в местах, где нет такой необходимости. Это намек на отдельный независимый парсер (а не просто расширения к языку). Во-вторых, одинаковые выражения означают разные вещи в PL/SQL и в языке модуля STANDARD. Есть другие, менее понятные для меня расхождения, но пока эти два. Если вы человек сведущий в этой теме и со сформировавшимся мнением, я предлагаю вам выдвинуть собственный тезис и критерий его правильности. Вам это позволит поучаствовать в дискуссии на равных, а не довольствоваться только поиском ошибок в доводах других (что тоже важная часть научного подхода поиска истины). Посмотрите критерии "компилятор или инсталлятор" пару сообщений назад, там есть возможность дополнить и расширить. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 16:57 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL В свою очередь INTEGER - подтип NUMBER НеофитSQL Примешивать тип NUMBER_BASE к этой конкретной дискуссии нет необходимости. Прочтите своё же первое сообщение в теме. Внимательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 17:22 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL Я сказал что он написан в псевдокоде по конкретным причинам, которые были указаны ранее. В таком случае, видимо в вашей речи слово псевдокод имеет своё значение. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 17:28 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL Вам это позволит поучаствовать в дискуссии на равных О, уже пошло деление на достойных участвовать в "дискуссии" и недостойных. Ну да, куда мне в калашный ряд-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 17:29 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL В свою очередь INTEGER - подтип NUMBER, Смотря, что такое number Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 17:40 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
env НеофитSQL В свою очередь INTEGER - подтип NUMBER, Смотря, что такое number Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Я прочитал ваш пример, но он не относится к теме. Я думаю вы сами это понимаете, как впрочем и все читатели. По поводу "О, уже пошло деление на достойных участвовать в "дискуссии" и недостойных." это вы зря. Каждый для себя выбирает уровень участия в той или другой теме. Кто-то пришел поучиться, кто-то поделиться знаниями а кто-то постебаться от нечего делать. Я могу только предложить как вы можете более полно поучаствовать в этой теме, я не могу вас заставить отвлекаться на "а я еще и вот так умею, хоть это не в тему" примеры. Да и не хотел бы; может вам не комфортно свой тезис выдвигать по какой-нибудь личной причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 18:13 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL, У вас цель какая? Научиться пользоваться PL/SQL по прямому назначению или написать свой собственный компилятор для своего собственного языка, чтобы скомпилированный код мог исполняться ядром PL/SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 18:51 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
graycode НеофитSQL, У вас цель какая? Научиться пользоваться PL/SQL по прямому назначению или написать свой собственный компилятор для своего собственного языка, чтобы скомпилированный код мог исполняться ядром PL/SQL? У меня достаточно простые задачи в PL/SQL, которые не требуют обширных знаний и могут решаться новичком вроде меня. Поскольку насущные задачи квалификацию особо не повысят, остаются книги а также ... Мне действительно интересно нырнуть под капот и посмотреть как разработчики Оракла решали ту или иную проблему. Ограничения, ошибки или срезание углов (как с BINARY_INTEGER, или rowid) вызывают особый интерес, т.к. это бывает признаком сложных проблем, или тупиков архитектуры. Про которые мне интересно подумать и расширить кругозор. Например, я сейчас смотрю как оракл вызывает С библиотеки. Создатели считали это абсолютно необходимым для скорости, но похоже что в 11.2 только для себя, скорее всего из соображений безопасности. Также интересно как Оракл поступился безопасностью для ускорения исполнения кода в STANDARD, и что это означает для тех кто этот пакет модифицируют. Надеюсь я ответил на ваш вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 20:33 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
env Вячеслав Любомудров, А до наката standard анонимные блоки с базовыми типами работать будут? ап. Мне тоже интересен авторитетный ответ на этот вопрос. Судя по интернету, ответ нет, т.к. при отсутствии STANDARD компилятор отказывается работать - мол нету STANDARD, и скомпилировать STANDARD обычными средствами тоже не получается (снова - нету STANDARD). Поэтому приходится запускать особые скрипты чтоб этот STANDARD заиметь, или как тут выразились, "накатать". https://db-blog.web.cern.ch/blog/franck-pachot/2018-12-minimal-oracle По ссылке описаны страдания человека, который развлекался установкой Оракла в абсолютно минимальной конфигурации, значительно меньше чем любая конфигурация рекомендуемая или поддерживаемая Ораклом. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 20:41 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
НеофитSQL У меня достаточно простые задачи в PL/SQL, которые не требуют обширных знаний и могут решаться новичком вроде меня. Поскольку насущные задачи квалификацию особо не повысят, остаются книги а также ... Наверное стоит поискать работу с более глубокими и интересными задачами, тогда времени заниматься ерундой не будет. НеофитSQL Мне действительно интересно нырнуть под капот и посмотреть как разработчики Оракла решали ту или иную проблему. Ограничения, ошибки или срезание углов (как с BINARY_INTEGER, или rowid) вызывают особый интерес, т.к. это бывает признаком сложных проблем, или тупиков архитектуры. Про которые мне интересно подумать и расширить кругозор. Таким образом кругозор сильно вы не расширите, если реально хотите расширить, изучайте Си, изучайте как создают компиляторы и вливайтесь в ряды разработчиков того же PostgreSQL или Kotlin, там действительно нужно ковыряться в системных кишках, как раз то что вам интересно, а PL/SQL не про это. НеофитSQL Например, я сейчас смотрю как оракл вызывает С библиотеки Вы думали что Oracle написан на ассемблере или сразу в машинных кодах? НеофитSQL и что это означает для тех кто этот пакет модифицируют. Зачем его модифицировать? Oracle поставляет продукт решающий определенные задачи, если есть сильно большое желание помочь Oracle с этим, то нужно идти работать непосредственно в сам Oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 22:35 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
graycode, спасибо за совет. C/C++ и несколько ассемблеров я изучил в начале карьеры, собственно ими и занимался. Там для меня все вроде как понятно, исключая прогресс в C++ стандарте за крайние годы. > Зачем его [STANDARD] модифицировать? Oracle поставляет продукт решающий определенные задачи, > если есть сильно большое желание помочь Oracle с этим, то нужно идти работать непосредственно в сам Oracle. Мне не надо, но я знаю что человек с этого форума (Вячеслав) делал небольшое изменение прошлом, по бизнес необходимости. Его изменение изменило длину какого-то поля, и сработало . Это важно для этой темы, т.к. редкий случай. Из этого я заключил что по крайней мере в версии 10 этот пакет не пустышка для отвода глаз, которую Оракл как бы "типа компилит" с предсказуемо одинаковым результатом и выставлением флажка VALID. Как минимум тянет на инсталл скрипт, т.к. читает какие-то константы из этого stdspec.sql. Чем читает, еще пока не разобрался. Похоже, что не штатным компилятором, пока не уверен. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 23:21 |
|
Как понимать текст SYS.STANDARD?
|
|||
---|---|---|---|
#18+
Что-то последнее время я мало кода постил. Вот загадка, сам придумал. Вроде в тему - см. комментарии. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
У меня на оракле 11.2 дает неожиданный результат. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2020, 23:29 |
|
|
start [/forum/topic.php?fid=52&msg=40004379&tid=1880841]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 163ms |
0 / 0 |