powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем отличаеться T-SQL от PL/SQL?
25 сообщений из 190, страница 1 из 8
Чем отличаеться T-SQL от PL/SQL?
    #34007489
pavel73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие основные отличие T-SQL от PL/SQL?
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34007538
Фотография Anton Demidov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У PL/SQL очень много стандартных библиотек
Синтаксис похож на Паскаль (IMHO более читабельный)
Есть понятие Package (аналог UNIT-a)
Может компилироваться в native code (опционально)

Если английский язык не пугает, то вот ссылка на Oracle Database PL/SQL User's Guide and Reference. Там можно просто полистать на предмет примеров кода - всё станет ясно.
Код: plaintext
1.
2.
--
Антон
Per rectum ad astrum
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34007546
Yo.!!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34007711
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavel73Какие основные отличие T-SQL от PL/SQL?
Различие именно языков - относительно неважный вопрос. Речь скорее стоило бы вести о возможностях.

Отличие именно языков в первую очередь в том, что PL/SQL по архитектуре близок структурным языкам: ADA, PL/1, ALGOL, в то время как авторов T-SQL явно и недвусмысленно вдохновлял BASIC.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34008881
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer в то время как авторов T-SQL явно и недвусмысленно вдохновлял BASIC.
С чего это Вы так решили? С чего это SyBas-у было вдохновляться BASICом?
В T-SQL практически нет никаких логических конструкций - только IF и цикл WHILE. Ни массивов, ни FOR, ни много чего что есть в BASIC. По-моему тут вообще никакого вдохновения не было, просто решили к чистому SQL добавить пару команд.
Другое дело что сложную логику на SQL писать редко когда нужно, но это другой вопрос.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34009202
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper
Другое дело что сложную логику на SQL писать редко когда нужно, но это другой вопрос.

И оооочень спорный.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34009346
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuperС чего это Вы так решили?
Хм. По предыдущему опыту, у нас были проблемы с конструктивным обсуждением куда более формализуемого вопроса, так что давайте, для экономии времени скажу "Ну вот решил - и все тут. Потому что похоже".

SergSuperДругое дело что сложную логику на SQL писать редко когда нужно
Зависит от решаемой задачи. Если она тривиальна, то конечно не нужно.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34010469
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Софтварер, помните, мы с вами как раз в той теме бились по поводу перегрузки? Бог с ней с перегрузкой.
Скажите как эксперт с мировым именем, чем продиктовано ограничение:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE
	FUNCTION SomeVal(Param IN NUMBER DEFAULT NULL) RETURN NUMBER AS
	BEGIN
		RETURN NULL;
	END;
	FUNCTION MyFunct(SomeVal IN NUMBER DEFAULT SomeVal()) RETURN NUMBER AS
	BEGIN
		RETURN NULL;
	END;
BEGIN
	NULL;
END;
/
что название аргумента не может совпадать с названием функции? (Если сделать SomeVal 1 IN NUMBER DEFAULT SomeVal()) будет PL/SQL procedure successfully completed.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34010710
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LongsvanoСкажите как эксперт с мировым именем, чем продиктовано ограничение:
Я бы не назвал это ограничением. Если придерживаться строгой терминологии, то это работа в соответствии со спецификацией языка в ситуации, которая если не ошибаюсь никак особо не оговорена, а если по-простому, то компилятор совершенно не обещал реагировать на первое попавшееся извращение так, как хотелось бы какому-то конкретному экспериментатору. Достаточно того, что он реагирует разумно.

Longsvanoчто название аргумента не может совпадать с названием функции?
Чушь. Они могут совпадать, никаких проблем.

Уточните пожалуйста, вы вправду не понимаете, как работает компилятор и почему он рассматривает эту ситуацию как ошибочную? [в сторону - я всегда полагал, что теория компиляторов должна быть обязательной дисциплиной у студентов-программистов, именно по той причине, что иначе они тратят кучу сил на разбор ситуаций типа "компилятор дал какое-то дурацкое сообщение об ошибке, не понимаю, чего он хочет"].
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012132
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДостаточно того, что он реагирует разумно.
О разумности и неразумности мы с вами не договоримся. Поэтому опустим.

авторЧушь. Они могут совпадать, никаких проблем.
В том примере, который я вам показал - не могут. Или сложно запастить его в SQL+ и убедится самому?

авторУточните пожалуйста, вы вправду не понимаете, как работает компилятор и почему он рассматривает эту ситуацию как ошибочную?
А вы знаете как работате оракловский компилятор? И откуда сии знания почерпнуты?
Скорее всего вы знаете как работает "стандартный" компилятор. И что правда он неспособен увидеть различие между вызовом функции и аргументом?

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

Итак, суть вопроса: неужели действительно стандартному компилятору не по силам прожевать указанную конструкцию?
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012530
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Longsvano авторДостаточно того, что он реагирует разумно.
О разумности и неразумности мы с вами не договоримся. Поэтому опустим.
Хм. Имхо корректная работа в некорректной ситуации - вполне разумное поведение. Хотя я готов полюбопытствовать на тему других точек зрения.

Longsvano авторЧушь. Они могут совпадать, никаких проблем.
В том примере, который я вам показал - не могут. Или сложно запастить его в SQL+ и убедится самому?
Если Вам сложно понять, какую ошибку Вы сделали, это не повод выдвигать глобальные утверждения. Вы действуете примерно так: написали код

Код: plaintext
declare i integer := 'a' ; begin null ; end ;

и на основании результатов компиляции делаете вывод, что в Oracle нельзя определять переменную с именем i.

LongsvanoИтак, суть вопроса: неужели действительно стандартному компилятору не по силам прожевать указанную конструкцию?
Ответ: он прожевывает ее абсолютно корректно.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012557
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЕсли Вам сложно понять, какую ошибку Вы сделали...
Да, мне сложно понять свою ошибку. Если вы ее видете, вы же можете не мудря указать на нее? "Так покажите нам его!"(с)
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012610
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LongsvanoДа, мне сложно понять свою ошибку. Если вы ее видете, вы же можете не мудря указать на нее? "Так покажите нам его!"(с)
Могу. Вы пытаетесь сослаться на объект из внешней области видимости из внутреннего блока, в котором он перекрыт одноименным объектом самого блока.

Ваше идиотское утверждение "имя аргумента не может совпадать с именем функции" опровергается простейшей модификацией Вашего примера:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
DECLARE
	FUNCTION SomeVal(Param IN NUMBER DEFAULT NULL) RETURN NUMBER AS
	BEGIN
		RETURN NULL;
	END;
	FUNCTION MyFunct(SomeVal IN NUMBER DEFAULT  1 ) RETURN NUMBER AS
	BEGIN
		RETURN NULL;
	END;
BEGIN
	NULL;
END;

Что же до вопроса "как синтаксически корректно написать то, что Вы имели в виду", то в действие вступают стандартные правила поведения при конфликте имен:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<<EXTERNAL>>
DECLARE
	FUNCTION SomeVal(Param IN NUMBER DEFAULT NULL) RETURN NUMBER AS
	BEGIN
		RETURN NULL;
	END;
	FUNCTION MyFunct(SomeVal IN NUMBER DEFAULT External.SomeVal()) RETURN NUMBER AS
	BEGIN
		RETURN NULL;
	END;
BEGIN
	NULL;
END;
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012686
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМогу.
Все понятно. Про оракловский компилер. Все для него убогого надо поточнее указывать, самому [ему] разобраться как будто сложно.

Видать у нас совсем разная идеология - я не вижу конфликта имен там где Оракл его видит. Для меня совершенно разное SomeVal как переменная и SomeVal() как функция, хоть и пишуться одинаково. Как ключ (родник) и ключ гаечный.

Спасибо за проеснение вопроса. Блрю(с).
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012710
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, тяжко с этим жить:

авторSQL> DECLARE
2 SomeVal NUMBER(10);
3 PROCEDURE SomeVal AS
4 BEGIN
5 NULL;
6 END;
7 BEGIN
8 NULL;
9 END;
10 /
PROCEDURE SomeVal AS
*
ERROR at line 3:
ORA-06550: line 3, column 2:
PLS-00305: previous use of 'SOMEVAL' (at line 2) conflicts with this use
ORA-06550: line 3, column 2:
PL/SQL: Item ignored

Посмтрим что по этому поводу думают другие компилеры...
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012713
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LongsvanoВсе понятно. Про оракловский компилер.
Главным образом понятно про Вас. Именно тот случай, когда учить - только портить. Да и поздно, наверное.

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

Longsvano Для меня совершенно разное SomeVal как переменная и SomeVal() как функция
На своем уровне - подумайте о различиях SomeVal как функции и SomeVal() как функции. Может что и надумаете.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34012796
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Longsvano
Посмтрим что по этому поводу думают другие компилеры...
Паскалевский тоже не различит.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34013138
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На своем уровне - подумайте о различиях SomeVal как функции и SomeVal() как функции. Может что и надумаете.

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

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

Проблема только в вызове стандартных SQL-функций типа SYSDATE. Ну так для всех стандартных функций без аргументов можно оставить вызов без скобок. В SQL и так есть зарезервированные слова, которые нельзя использовать для именования переменных и еще от одного несущественного ограничения никто не умрет.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34013208
DimaR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LongsvanoПроблема только в вызове стандартных SQL-функций типа SYSDATE. Ну так для всех стандартных функций без аргументов можно оставить вызов без скобок. В SQL и так есть зарезервированные слова, которые нельзя использовать для именования переменных и еще от одного несущественного ограничения никто не умрет.

Тебе наверно ооооочень скушно.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34013210
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper Longsvano
Посмтрим что по этому поводу думают другие компилеры...
Паскалевский тоже не различит.

Нет, не получится такой тест провести на C образных языках. Так идеология другая. Там функция имеет право ничего не возвращать.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34013230
AI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Longsvano
Если запретить синтаксис вызова функций без указания скобок, тогда вообще проблем не вижу, так как скорее всего вызов функций без аргументов - не слишком частый случай.
Тогда будет полноя однозначность: все что со скобками - функция, без - переменная.

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

Проблема только в вызове стандартных SQL-функций типа SYSDATE. Ну так для всех стандартных функций без аргументов можно оставить вызов без скобок. В SQL и так есть зарезервированные слова, которые нельзя использовать для именования переменных и еще от одного несущественного ограничения никто не умрет.

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

Для смеха: в pl/sql вызов объектных методов-функций обязан быть со скобками если у метода нет параметров. Но дело в том, что объектами там мало кто пользуется...

2 Longsvano

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

Вот сишник справа ручается что в Сях нельзя вызывать функцию без скобок. И даже это демонстрикуем с удовольствием. Компилятор - какойто от Борланда.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34013313
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LongsvanoЕсли запретить синтаксис вызова функций без указания скобок
То это будет бессмысленный откат на тридцать пять лет назад. Нафиг.

LongsvanoОднако глядя на наш менорский тон можно подумать что вызов без скобок офигеть какое мега-нововведение без которого никак не обойтись.
Это мега-нововведение языка, который развивался в совершенно другой ветке по своим законам. И, кстати, именно лишние скобки, в первую очередь в операторах, с моей точки зрения являются его наиболее неудачной деталью.

LongsvanoИ более того, вы непоследовательны
Я принимаю подход используемого инструмента, пользуюсь его преимуществами и знаю его ограничения.

Если по-Вашему, последовательность - орать "тут все не так, как я привык, а думать мне лень и вообще тяжело, а уж читать тем более", то я действительно непоследователен.

Longsvano: раз вы, судя по всему за полною однозначность кода, тогда скорее всего в ваших программах всегда вызов функции без аргуметов заканчивается скобками, чтобы понятно было что делается, либо присвоение переменной, либо значения функции.
Мои предпочтения, если хотите, давайте обсудим в отдельном топике, к сравнению языков они отношения не имеют.

Озадачившее Вас поведение совершенно типично для языков того семейства, которое я назвал - Алгол и его наследники, в том числе упомянутый SergSuper-ом Паскаль.

Насчет Вашего предложения - я бы порекомендовал изучить предмет до того, как предлагать пути его модификации.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34013361
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LongsvanoНет, не получится такой тест провести на C образных языках
Еще одно... странное утверждение.

Longsvano AI
Назовите, пожалуйста, хоть один паскаль-подобный язык, в котором вызов функции без параметров обязан быть со скобками.
Вот сишник справа ручается что в Сях нельзя вызывать функцию без скобок.
А Си уже стал паскаль-подобным языком? Надо обрадовать старикашку Ника....

А сишник - правильно ручается, нельзя. Это еще терпимо, хотя криво и вызвано только плохо продуманным синтаксисом, а вот необходимость указывать скобки в if, while, catch просто бесит.
...
Рейтинг: 0 / 0
Чем отличаеться T-SQL от PL/SQL?
    #34013443
Longsvano
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА Си уже стал паскаль-подобным языком? Надо обрадовать старикашку Ника....

В данном случае - неважно. Оба процедурные, значит теоретически подходы более менее одинаковые.

А сишник - правильно ручается, нельзя. Это еще терпимо, хотя криво и вызвано только плохо продуманным синтаксисом, а вот необходимость указывать скобки в if, while, catch просто бесит.

Ну знаете, зоопарк BEGIN - END-ов не лучше {} для тех кто после Си читает PL/SQL. А уж FOR без степа с MOD-ом или TRIM( BOTH FROM ).

И наконец, поставьте себе среду с подстветкой парных скобок. Вон у лиспофилов все в скобках, однако не жужжат.
...
Рейтинг: 0 / 0
25 сообщений из 190, страница 1 из 8
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Чем отличаеться T-SQL от PL/SQL?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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