powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Sybase ASE vs MSSQLServer
22 сообщений из 47, страница 2 из 2
Sybase ASE vs MSSQLServer
    #32846127
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Роман Дынник

а как себе представить выполнение DML в рамках SQL?

любой запрос на выборку данных не должен выполнять модификации внешних данных.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846189
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник 2 ASCRUS
авторВообще то в MSSQL в таких случаях вместо ХП можно использовать UDF, которые вполне нормально можно вызывать в приведенном Вами запросе
Не во всех случаях. MSSQL накладывает кучу ограничений на манипуляцию данными в UDF.
следующую функцию не удастся даже создать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
create function dbo.fn_delete(@id int)
returns int
as
begin
	delete from t5 where id=@id;
 	return( 1 );
end
go

select dbo.fn_delete(id) from t5;

И хорошо, что накладывает. Вот в Sybase ASA в функциях можно что угодно творить и самое пренеприятное, что все это еще работает и даже без ошибок и довольно шустро. В итоге я "таких примеров" насмотрелся использования курсоров, DML и DDL в функциях, что без 100 грамм не разберешь чего хотел разработчик такой логикой сказать. То же самое касается в ASA и ХП, которые можно в секции FROM использовать - пиши что хочешь, ASA все сделает - только вот ни разу мне не пришло почему то в голову в процедуре, которая используется в запросе DDL или DML накатать ... наверное воспитание такое :)
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846190
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AAron
авторлюбой запрос на выборку данных не должен выполнять модификации внешних данных
Я же говорю что в sybase такую процедуру/функцию написать можно и это штатная возможность а не какая-либо недокументированная.
И криминального в этом ничего. А в mssql-нельзя (мелкие опять видимо свои стандарты придумали).
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846198
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот вот. В общем вместо:
Код: plaintext
select dbo.fn_delete(id) from t5;
пишите:
Код: plaintext
DELETE FROM t5;
и не нарушайте стандарты работы SQL - в конце концов если все разрешено, это не повод начинать безобразия.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846199
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
На вкус и цвет...
Что не запрещено, то разрешено.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846266
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странные вещи ты говоришь, ASCRUS

Если я использую ХП, то могу что-то куда-то заDML-ить, а потом отплюнуться итоговым селектом, и никакие стандарты SQL при этом не нарушаются. Правда и селект из этой сохраненки я не сделаю.
Если я использую UDF, то ничего никуда DML-ить я уже не могу. Дескать безобразия низзя творить.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846339
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лох ПозорныйСтранные вещи ты говоришь, ASCRUS

Если я использую ХП, то могу что-то куда-то заDML-ить, а потом отплюнуться итоговым селектом, и никакие стандарты SQL при этом не нарушаются. Правда и селект из этой сохраненки я не сделаю.
Если я использую UDF, то ничего никуда DML-ить я уже не могу. Дескать безобразия низзя творить.
Немножко не поняли :) Пользуйтесь наздоровье DML в ХП и UDF. Но извиняюсь неявно во время выполнения запроса организовывать транзакцию - лично для меня диковато. Вы вдумались в запрос, который привел Роман:
Код: plaintext
select dbo.fn_delete(id) from t5;
Он же вернет единички на все кол-во записей t5, попутно удаляя все эти записи, причем стартует неявную транзакцию, так что после выполнения этого запроса по идее и COMMIT не мешало бы сделать. А если на t5 еще и триггера висят или каскады - вообще чудесно получается - один SELECT, а сколько всего удалилось :)
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846341
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
далее ... не легче ли писать явный DELETE FROM Table с нужными соединениями и условиями, чем заниматься такими странными вещами ?
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846365
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
А если бизнес-логику на уровне записи нужно организовать при удаленнии (т.е. в хп)?
...
без транзакций - для простоты.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846404
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник ASCRUS
А если бизнес-логику на уровне записи нужно организовать при удаленнии (т.е. в хп)?
...
без транзакций - для простоты.
Кто мешает в ХП вызывать DELETE WHERE ... или даже организовать курсор, если уж так позаписям хочется и на каждую запись курсора делать DELETE WHERE id = @id и вызывать себе CALL StoredProcedured (@Param1, @Param2) ??? Зачем это в SELECT-то пихать ??? Можете привести хоть один пример, из которого было бы явно видно, что это был бы разумный метод изменения данных ?
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846420
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ASCRUS
Кто мешает в ХП вызывать DELETE WHERE ... или даже организовать курсор, если уж так позаписям хочется и на каждую запись курсора делать DELETE WHERE id = @id и вызывать себе CALL StoredProcedured (@Param1, @Param2) ??? Зачем это в SELECT-то пихать ??? Можете привести хоть один пример, из которого было бы явно видно, что это был бы разумный метод изменения данных
ASCRUS , внимательнее !

Роман Дынникменя лично очень расстраивает тот факт, что в mssql нельзя вызвать хп в select-e.
т.е. очень удобно, например, написать select xsp_delete(id) from tb.
Приходится извращаться либо ч/з курсоры, либо ч/з временные таблицы.

Т.е. так и делаю в mssql, либо курсором, либо используя временные таблицы для наполнения id-шниками.
Но в sybase то это сделать гораздо проще, короче и лаконичнее ч/з select xsp_del(id) ...
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846436
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынник ASCRUS
Кто мешает в ХП вызывать DELETE WHERE ... или даже организовать курсор, если уж так позаписям хочется и на каждую запись курсора делать DELETE WHERE id = @id и вызывать себе CALL StoredProcedured (@Param1, @Param2) ??? Зачем это в SELECT-то пихать ??? Можете привести хоть один пример, из которого было бы явно видно, что это был бы разумный метод изменения данных
ASCRUS , внимательнее !

Роман Дынникменя лично очень расстраивает тот факт, что в mssql нельзя вызвать хп в select-e.
т.е. очень удобно, например, написать select xsp_delete(id) from tb.
Приходится извращаться либо ч/з курсоры, либо ч/з временные таблицы.

Т.е. так и делаю в mssql, либо курсором, либо используя временные таблицы для наполнения id-шниками.
Но в sybase то это сделать гораздо проще, короче и лаконичнее ч/з select xsp_del(id) ...
Нет уж - Вы внимательнее :) Я задал вполне нормальный вопрос:
Зачем писать функцию, которая удаляет запись и использовать ее в SELECT для удаления записи, когда можно просто написать DELETE FROM Table ?
И тут уже не важно для какой СУБД, мне просто сама логика такого действия не очень понятна, прошу обьяснений ...
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846465
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бизнес-логика - в хп.
Для множественных операций типа delete from table where id in(...)
нужен будет еще один слой(тип) хп типа deleteList в котором практически придется продублировать ту же логику что и для deleteItem, но с учетом множественности.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846498
Фотография ASCRUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникбизнес-логика - в хп.
Для множественных операций типа delete from table where id in(...)
нужен будет еще один слой(тип) хп типа deleteList в котором практически придется продублировать ту же логику что и для deleteItem, но с учетом множественности.
Не понимаю я, какая может быть такая бизнес-логика навороченная, которую в DELETE прописать нельзя и приходиться специальную ХП писать для этого. Наверное Роман мы просто в разных измерениях мыслим (бывает и такое)
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846505
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Роман Дынник
Имхо, это неправильно. Ошибка именно проектирования.

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

Поверь, я видел столько кривого кода, что только рад, что MS не обладает такой фичей. Также со "страхом" ожидаю Юкон, т.к. там будет CLR.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846508
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное :)
Каскадный delete, например.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846534
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВот приведенный запрос - это второй вариант использования
А что будет то, просвятите тёмного.

авторИмхо, это неправильно. Ошибка именно проектирования
Тогда уж ошибка не проектирования, а реализации CRUD-слоя. В котором часть операций должна быть ориентирована на множественную обработку, вместо обработки на уровне единичной записи.
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846669
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишите триггер либо вызывайте ХП на каждую запись, только по человечески.

То, что нельзя в MS SQL сделать select * from exec SP - это фигово конечно.
Но чтобы вот такие функции - это уже разум отдыхает :))

-- Tygra's --
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846741
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну чё вы на человека набросились? Была б такая возможность можно было бы легко Оракловский sequence реализовать
Никого же не удивляет insert Tbl exec, а без insert почему-то нельзя
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846930
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман ДынникЕще - невозможность использования алиасов столбцов в order by
Это где Вы проверяли ?
Код: plaintext
SELECT au_id AS id FROM pubs..authors order by id
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32846931
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergSuper Была б такая возможность можно было бы легко Оракловский sequence реализоватьА надо ли ? :) Ценность, IMHO, неочевидна...
...
Рейтинг: 0 / 0
Sybase ASE vs MSSQLServer
    #32847049
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ChA
ChAЭто где Вы проверяли ?
выше был запрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select 
(case i
 when  1  then  10 
 when  2  then  20 
end) as k,
y
from t
where k> 10  order by k
ASCRUS напомнил что можно использовать порядковый номер столбца, но согласитесь, это немного не то, особенно когда нужно еще вывести к примеру (k*i) as ...
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Sybase ASE vs MSSQLServer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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