PL\SQL. Можно ли?
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



PL\SQL. Можно ли? Expand / Collapse
Автор
Сообщение
19.12.2001 7:33
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 20.12.2001 14:37
Сообщ.: 8, Visits: 89
Подскажите кто-нибудь, возможно ли в PL\SQL выполнить операции конъюнкции и дизъюнкции. Заранее благодарю
Сообщ. #737044
19.12.2001 9:05
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.06.2003 18:26
Сообщ.: 263, Visits: 2 905
Конечно же можно, друг мой. Not, And и Or, только будь осторожен при сравнении с Null, например:
1. true and null = null,
2. false and null = false,
3. true or null = true,
4. false or null = null.
Удачи!
Сообщ. #737050
19.12.2001 9:12
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 20.12.2001 14:37
Сообщ.: 8, Visits: 89
Огромное спасибо за ответ, но это я и так понимаю.
Я имею в виду операции типа (12 and 7)=4
Сообщ. #737051
19.12.2001 9:21
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.06.2003 18:26
Сообщ.: 263, Visits: 2 905
Не пойму для чего именно так, а не простыми операторами. Все, что не равно 0 - бедут труе, остальное - фальш, а как со строками я не знаю.
Сообщ. #737053
19.12.2001 10:26
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 20.12.2001 14:37
Сообщ.: 8, Visits: 89
Я проектирую БД по документообороту.Тип документа я забиваю в некоторое поле в таблице.
Документ может являтся одновременно например гос. стандартом (ГОСТ) и техническими условиями (ТУ). Я решил показать это следующим образом:
---Создать числовое поле ТИП_ДОК
---Если документ является ТУ то включаем 0-й бит, если ГОСТ то 1-й бит
и т.д и т.п.
Это я привел упрощенный пример
Так вот, смысл в том, как мне посмотреть что документ являетя ГОСТ?
В Delphi это делается просто: проверить на истинность выражение
(ТИП_ДОК and 2)
А как это сделать на сервере ума не приложу.
Сообщ. #737061
19.12.2001 13:50
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 01.06.2003 18:26
Сообщ.: 263, Visits: 2 905
а если так:

IF doc_type = 1 THEN
/* тип документа ГОСТ */
ELSIF doc_type = 2 THEN
/* тип документа ТУ */
/* ELSIF doc_type = ... другие условия */
/* другие реакции */
ELSE
/* не удовлетворяет */
END IF
Сообщ. #737104
19.12.2001 14:22
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 17.04.2003 15:55
Сообщ.: 69, Visits: 760
Бред!!! Неправильно проектируешь. Никаких битовых полей, этож реляционная база данных. Делаешь таблицу типов документов, вроде DOC_TYPE (DOC_TYPE_ID, NAME, ...), в основной таблице пишешь ссылку на DOC_TYPE. Поверь, многих проблем избежишь при стандартных селектах. А код PL/SQL тебе Kreek вобщем правильно написал, только еще раз повторюсь, кроме PL/SQL есть еще просто SQL, который будешь активно использовать, если хочешь чтоб быстро работало!!!
Сообщ. #737115
19.12.2001 14:29
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum Guru

участник
Last Login: 17.04.2003 15:55
Сообщ.: 69, Visits: 760
Кстати дополнение. Вместо чисел в primary key для таких таблиц можно использовать тип varchar2(30), ну длина 30 вобщем не обязательна, можно что-то свое. Тогда у тебя будут строковые константы например:

DOC_TYPE_ID NAME
----------- ------------
GOST Документ ГОСТ
TU Документ ТУ

тогда можно сделать так:

select
D.*,
(select NAME from DOC_TYPE where DOC_TYPE_ID=D.DOC_TYPE_ID) as DTP
from DOCUMENT D where D.DOC_TYPE_ID='GOST'

на клиенте показываешь только документы типа ГОСТ, ну и так далее.
Сообщ. #737118
19.12.2001 15:04
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being