Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8   вперед  Ctrl      все
 Чем отличаеться T-SQL от PL/SQL?  [new]
pavel73
Member

Откуда:
Сообщений: 804
Какие основные отличие T-SQL от PL/SQL?
22 сен 06, 23:39    [3175548]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Anton Demidov
Member

Откуда: Atlanta, GA
Сообщений: 1187
У PL/SQL очень много стандартных библиотек
Синтаксис похож на Паскаль (IMHO более читабельный)
Есть понятие Package (аналог UNIT-a)
Может компилироваться в native code (опционально)

Если английский язык не пугает, то вот ссылка на Oracle Database PL/SQL User's Guide and Reference. Там можно просто полистать на предмет примеров кода - всё станет ясно.

--
Антон
Per rectum ad astrum
23 сен 06, 00:54    [3175637]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Yo.!!
Guest
было ужо
https://www.sql.ru/forum/actualthread.aspx?tid=297555#2706613
23 сен 06, 01:32    [3175661]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
pavel73
Какие основные отличие T-SQL от PL/SQL?

Различие именно языков - относительно неважный вопрос. Речь скорее стоило бы вести о возможностях.

Отличие именно языков в первую очередь в том, что PL/SQL по архитектуре близок структурным языкам: ADA, PL/1, ALGOL, в то время как авторов T-SQL явно и недвусмысленно вдохновлял BASIC.
23 сен 06, 12:41    [3175944]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
softwarer
в то время как авторов T-SQL явно и недвусмысленно вдохновлял BASIC.

С чего это Вы так решили? С чего это SyBas-у было вдохновляться BASICом?
В T-SQL практически нет никаких логических конструкций - только IF и цикл WHILE. Ни массивов, ни FOR, ни много чего что есть в BASIC. По-моему тут вообще никакого вдохновения не было, просто решили к чистому SQL добавить пару команд.
Другое дело что сложную логику на SQL писать редко когда нужно, но это другой вопрос.
25 сен 06, 09:57    [3177986]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
DimaR
Member

Откуда:
Сообщений: 1570
SergSuper

Другое дело что сложную логику на SQL писать редко когда нужно, но это другой вопрос.


И оооочень спорный.
25 сен 06, 11:38    [3178552]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
SergSuper
С чего это Вы так решили?

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

SergSuper
Другое дело что сложную логику на SQL писать редко когда нужно

Зависит от решаемой задачи. Если она тривиальна, то конечно не нужно.
25 сен 06, 12:16    [3178861]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
Софтварер, помните, мы с вами как раз в той теме бились по поводу перегрузки? Бог с ней с перегрузкой.
Скажите как эксперт с мировым именем, чем продиктовано ограничение:
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;
/
что название аргумента не может совпадать с названием функции? (Если сделать SomeVal1 IN NUMBER DEFAULT SomeVal()) будет PL/SQL procedure successfully completed.
25 сен 06, 16:51    [3180843]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
Longsvano
Скажите как эксперт с мировым именем, чем продиктовано ограничение:

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

Longsvano
что название аргумента не может совпадать с названием функции?

Чушь. Они могут совпадать, никаких проблем.

Уточните пожалуйста, вы вправду не понимаете, как работает компилятор и почему он рассматривает эту ситуацию как ошибочную? [в сторону - я всегда полагал, что теория компиляторов должна быть обязательной дисциплиной у студентов-программистов, именно по той причине, что иначе они тратят кучу сил на разбор ситуаций типа "компилятор дал какое-то дурацкое сообщение об ошибке, не понимаю, чего он хочет"].
25 сен 06, 17:49    [3181242]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
автор
Достаточно того, что он реагирует разумно.

О разумности и неразумности мы с вами не договоримся. Поэтому опустим.

автор
Чушь. Они могут совпадать, никаких проблем.

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

автор
Уточните пожалуйста, вы вправду не понимаете, как работает компилятор и почему он рассматривает эту ситуацию как ошибочную?

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

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

Я тоже всегда это предполагал. Но увы, не студент-программист. Поэтому, собственно, и задал вам вопрос.

Итак, суть вопроса: неужели действительно стандартному компилятору не по силам прожевать указанную конструкцию?
26 сен 06, 12:02    [3183916]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
Longsvano
автор
Достаточно того, что он реагирует разумно.

О разумности и неразумности мы с вами не договоримся. Поэтому опустим.

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

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

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

Если Вам сложно понять, какую ошибку Вы сделали, это не повод выдвигать глобальные утверждения. Вы действуете примерно так: написали код

declare i integer := 'a' ; begin null ; end ;

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

Longsvano
Итак, суть вопроса: неужели действительно стандартному компилятору не по силам прожевать указанную конструкцию?

Ответ: он прожевывает ее абсолютно корректно.
26 сен 06, 13:29    [3184617]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
автор
Если Вам сложно понять, какую ошибку Вы сделали...

Да, мне сложно понять свою ошибку. Если вы ее видете, вы же можете не мудря указать на нее? "Так покажите нам его!"(с)
26 сен 06, 13:34    [3184659]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
Longsvano
Да, мне сложно понять свою ошибку. Если вы ее видете, вы же можете не мудря указать на нее? "Так покажите нам его!"(с)

Могу. Вы пытаетесь сослаться на объект из внешней области видимости из внутреннего блока, в котором он перекрыт одноименным объектом самого блока.

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

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;

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

<<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;
26 сен 06, 13:49    [3184761]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
автор
Могу.

Все понятно. Про оракловский компилер. Все для него убогого надо поточнее указывать, самому [ему] разобраться как будто сложно.

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

Спасибо за проеснение вопроса. Блрю(с).
26 сен 06, 14:03    [3184894]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
Мда, тяжко с этим жить:

автор
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


Посмтрим что по этому поводу думают другие компилеры...
26 сен 06, 14:08    [3184935]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
Longsvano
Все понятно. Про оракловский компилер.

Главным образом понятно про Вас. Именно тот случай, когда учить - только портить. Да и поздно, наверное.

Longsvano
Видать у нас совсем разная идеология - я не вижу конфликта имен там где Оракл его видит.

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

Longsvano
Для меня совершенно разное SomeVal как переменная и SomeVal() как функция

На своем уровне - подумайте о различиях SomeVal как функции и SomeVal() как функции. Может что и надумаете.
26 сен 06, 14:08    [3184939]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Longsvano

Посмтрим что по этому поводу думают другие компилеры...

Паскалевский тоже не различит.
26 сен 06, 14:29    [3185138]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
На своем уровне - подумайте о различиях SomeVal как функции и SomeVal() как функции. Может что и надумаете.


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

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

Проблема только в вызове стандартных SQL-функций типа SYSDATE. Ну так для всех стандартных функций без аргументов можно оставить вызов без скобок. В SQL и так есть зарезервированные слова, которые нельзя использовать для именования переменных и еще от одного несущественного ограничения никто не умрет.
26 сен 06, 15:56    [3185871]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
DimaR
Member

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


Тебе наверно ооооочень скушно.
26 сен 06, 16:10    [3185998]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
SergSuper
Longsvano

Посмтрим что по этому поводу думают другие компилеры...

Паскалевский тоже не различит.


Нет, не получится такой тест провести на C образных языках. Так идеология другая. Там функция имеет право ничего не возвращать.
26 сен 06, 16:10    [3186001]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
AI
Member

Откуда: Москва
Сообщений: 2817
Longsvano

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

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

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


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

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

2 Longsvano

Вам нужны шашечки, а "нормальным" людям надо работать.
26 сен 06, 16:16    [3186059]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

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


Вот сишник справа ручается что в Сях нельзя вызывать функцию без скобок. И даже это демонстрикуем с удовольствием. Компилятор - какойто от Борланда.
26 сен 06, 16:31    [3186202]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
Longsvano
Если запретить синтаксис вызова функций без указания скобок

То это будет бессмысленный откат на тридцать пять лет назад. Нафиг.

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

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

Longsvano
И более того, вы непоследовательны

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

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

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

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

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

Насчет Вашего предложения - я бы порекомендовал изучить предмет до того, как предлагать пути его модификации.
26 сен 06, 16:32    [3186217]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67454
Блог
Longsvano
Нет, не получится такой тест провести на C образных языках

Еще одно... странное утверждение.

Longsvano
AI

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

Вот сишник справа ручается что в Сях нельзя вызывать функцию без скобок.

А Си уже стал паскаль-подобным языком? Надо обрадовать старикашку Ника....

А сишник - правильно ручается, нельзя. Это еще терпимо, хотя криво и вызвано только плохо продуманным синтаксисом, а вот необходимость указывать скобки в if, while, catch просто бесит.
26 сен 06, 16:43    [3186295]     Ответить | Цитировать Сообщить модератору
 Re: Чем отличаеться T-SQL от PL/SQL?  [new]
Longsvano
Member

Откуда:
Сообщений: 51
автор
А Си уже стал паскаль-подобным языком? Надо обрадовать старикашку Ника....


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

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


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

И наконец, поставьте себе среду с подстветкой парных скобок. Вон у лиспофилов все в скобках, однако не жужжат.
26 сен 06, 16:56    [3186415]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6 7 8   вперед  Ctrl      все
Все форумы / Сравнение СУБД Ответить