ADOStoredProc+Parameter+Boolean+Input

CrazyAdmin
Дата: 14.07.2009 15:52:27
Что-то я чуток недогоняю, может подкинете пример в каком формате в Oracle хранить логику и как доставить переменную типа Boolean из Delphi 7 в таблицу Oracle...
Альт
Дата: 14.07.2009 20:02:41
Использовать Variant... TFiled.Clear/TFiled.IsNull etc.?
Dmitry Arefiev
Дата: 14.07.2009 20:37:32
CrazyAdmin
Что-то я чуток недогоняю, может подкинете пример в каком формате в Oracle хранить логику и как доставить переменную типа Boolean из Delphi 7 в таблицу Oracle...

Что ты не понимаешь ... OCI не умеет передавать Boolean. Точка.
Все остальное на тему тут прозвучало.
Petro123
Дата: 14.07.2009 22:59:43
Dmitry Arefiev,
+1
если ещё проще, то кто-то хранит "T" "F", кто то (и я) храним "1", "0" в number(1).
C прописанным default 0 и check - проверкой на 0 и 1 в БД.
CrazyAdmin
Дата: 15.07.2009 08:20:00
Dmitry Arefiev

Что ты не понимаешь ... OCI не умеет передавать Boolean. Точка.
Все остальное на тему тут прозвучало.

Раз OCI не передает Boolean Нафига в PL/SQL Oracle и ADOStoredProc - DataType есть тип Boolean???
Хорошо, допустим это глюк или опечатка, тоесть OCI не обрабатывает Boolean (я не гуру спорить не буду, просто хочу понять).
Petro123

Dmitry Arefiev,
+1
если ещё проще, то кто-то хранит "T" "F", кто то (и я) храним "1", "0" в number(1).
C прописанным default 0 и check - проверкой на 0 и 1 в БД.

Я храню в поле типа Varchar2(2) хотя в любую секунду могу и поменять на number.
Единственное что я использую значения "-1" и "0"
Только вот как понимать тогда это:
Anatoly Podgoretsky
Считать, что Bool имеет особое значение - неправильно, рано или поздно по зубам, надо считать, что Bool <> 0
Dmitry Arefiev
Дата: 15.07.2009 08:40:19
CrazyAdmin
Раз OCI не передает Boolean Нафига в PL/SQL Oracle и ADOStoredProc - DataType есть тип Boolean???

* OCI, SQL - про Boolean не знают.
* PL/SQL - имеет такой встроенный тип данных.
* ADOStoredProc - умеет работать не только с Oracle. И в некоторых СУБД Boolean
поддерживается.

ИМХО, причина нежелания вводить Boolean в SQL примерно следующая - Boolean
колонка это денормализация.
CrazyAdmin
Дата: 15.07.2009 08:48:57
Dmitry Arefiev
CrazyAdmin
Раз OCI не передает Boolean Нафига в PL/SQL Oracle и ADOStoredProc - DataType есть тип Boolean???

* OCI, SQL - про Boolean не знают.
* PL/SQL - имеет такой встроенный тип данных.
* ADOStoredProc - умеет работать не только с Oracle. И в некоторых СУБД Boolean
поддерживается.

ИМХО, причина нежелания вводить Boolean в SQL примерно следующая - Boolean
колонка это денормализация.


Вот, спс за комент... теперь понятно...
Сейчас готовлю пост с тем кодом, который я реализовать пытаюсь и из-за которого весь кипиш...
Dmitry Arefiev
Дата: 15.07.2009 08:53:20
CrazyAdmin
(я не гуру спорить не буду, просто хочу понять).

При чем тут гуру - открываешь Oracle доку или ищещь в Google.
CrazyAdmin
Считать, что Bool имеет особое значение - неправильно, рано или поздно по зубам, надо считать, что Bool <> 0

Альт хотел завернуть про True значение, наверное.
Альт
Дата: 15.07.2009 08:56:49
Я не пойму, что вам неясно. На уровне декларативного sql такого типа нет (именно потому вы и не можете использовать его, к примеру, в операциях выборки... или в качестве типа для колонки для "обычных" таблиц), а на уровне процедурного pl/sql есть (было бы странно если бы его там не было, а конструкции ветвления были) и в пиэльных таблицах этот тип использовать можно и нужно:
+
+
create or replace package P_TEST is

 TYPE t_bool_table_simple IS TABLE OF BOOLEAN;
 
 TYPE t_bool_table_row IS RECORD (
   t_bool_field BOOLEAN,
   t_other_field NUMBER(1)
 );
 
 TYPE t_bool_table_hard IS TABLE OF t_bool_table_row;

end P_TEST;
/
CrazyAdmin
Дата: 15.07.2009 09:24:22
Альт
Я не пойму, что вам неясно. На уровне декларативного sql такого типа нет (именно потому вы и не можете использовать его, к примеру, в операциях выборки... или в качестве типа для колонки для "обычных" таблиц), а на уровне процедурного pl/sql есть (было бы странно если бы его там не было, а конструкции ветвления были) и в пиэльных таблицах этот тип использовать можно и нужно:

Меня можно на "ты" ... :)

А вот по поводу SQL и PL/SQL это я все понимаю и знаю, так же усердно использую в процедурах, функциях и т. д.
Тут была проблема почему я немогу передать через ADOStoredProc в ХП Oracl-а переменную типа Boolean.