![]() |
|
Модераторы: LSD |
![]()
|
|
| Golar |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.5.2006 Где: Россия, Воронеж Репутация: нет Всего: нет |
Добрый день, мне нужен совет по процедурам в PL\SQL. Можно ли писать commit и roolback внутри процедур и функций? Мне необходимо проверить можно ли сделать ход из одной клетки (x1,y1) в другую (x2,y2) на шахматной доске. Я примерно набросала функцию, пожалуйста посмотрите.
У меня есть таблица Chess, хранящая ситуацию на досках:
Процедура проверки (здесь rek=true, если вошли по рекурсии):
|
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 2 Всего: 151 |
Можно. Но вот оправданно ли это в данной ситуации, судить не берусь (про себя думаю, что нет: всё-таки откат транзакции - это не инструмент программной логики). -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Golar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.5.2006 Где: Россия, Воронеж Репутация: нет Всего: нет |
А как Вы посоветуете здесь "откатиться"? Просто, заранее оправдаюсь, с PL\SQL имею дело не больше недели и поэтому есть большие пробелы в умении им пользоваться. Не посоветуете, может в корне по-другому сделать?
|
|||
|
||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
Совершенно верно - COMMIT и ROLLBACK - это просто операторы управления транзакциями. Использовать их для описания логики - плохая практика. Опишите все ситуации явно, через CASE или IF THEN. В крайнем случае через исключения. И еще смените стиль. Ваш код ужжжасен.
-------------------- It's better to burn out than to fade away. |
|||
|
||||
| Golar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.5.2006 Где: Россия, Воронеж Репутация: нет Всего: нет |
я не спорю, был бы прекрасен - за помощью бы не обращалась!
|
|||
|
||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
Просто сделайте так, чтобы откатываться не пришлось. ROLLBACK - это звучит гордо, но не используйте его не в исключительных ситуациях.
Кроме того, оставьте в покое базу! Создайте структуры типа RECORD и меняйте их динамически, если уж хотите написать шахматы на PL\SQL. Он вообще мало для этого подходит. -------------------- It's better to burn out than to fade away. |
|||
|
||||
| Golar |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 8.5.2006 Где: Россия, Воронеж Репутация: нет Всего: нет |
Конечно! Знаете, я поняла уже, что Pl\SQL для этого мало подходит!!! Но задание сделать это все на нем, родимом!
Это сообщение отредактировал(а) Golar - 16.5.2006, 16:50 |
|||
|
||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
Ладно, вот вам советы:
1) Давайте всем переменным осмысленные имена. Ничего, если они будут немного длиннее. 2) Не используйте таблицы, это нерационально в Вашем случае. 3) Используйте записи и коллекции. 4) Разбейте Ваш код на маленькие процедуры и функции. 5) Остальные советы сводятся к общим best practices по программированию. -------------------- It's better to burn out than to fade away. |
|||
|
||||
![]()
|
| Правила форума "Oracle" | |
|
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Oracle | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |