powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Битовые операции
16 сообщений из 16, страница 1 из 1
Битовые операции
    #32273804
dagr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Народ, правильно ли я понял, что в DB2 их нет.
Если да, то кто нить может сказать почему?
...
Рейтинг: 0 / 0
Битовые операции
    #32273861
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зато есть механизм для их создания. UDF.
...
Рейтинг: 0 / 0
Битовые операции
    #32274002
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще-то можно и без UDF, пользуясь делением, остатком от деления (MOD) и умножением. Например, сдвиг вправо на 1 все равно как деление на 2.

Лично я считаю, что пользователи битовых операций (вроде ТАИС'а, что в Сирене запихнул при их (битовых операций) помощи три поля в одно) - [censored]. Усложнять себе и другим (в том числе оптимизатору) ради неизвестно чего - грошовой экономии дискового пространства?
...
Рейтинг: 0 / 0
Битовые операции
    #32281191
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Alexey Popov
a mogno pokonkretnee kak imenno eto ydelat\
...
Рейтинг: 0 / 0
Битовые операции
    #32281452
Фотография Alexey Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно. Но до сих пор я писал только под Win32 на Delphi :)
1. Создаешь DLL с нужной экспортируемой функцией.
Ex:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Library dbudf;

type
  PInteger = ^Integer;

procedure lib_xor(Val1, Val2: PInteger; Result: PInteger;
  Val1_Null, Val2_Null: PInteger; Result_Null: PInteger;
  SqlState, FuncName, SpecName, MsgText: PChar); stdcall;
begin
  if (Val1_Null^ = - 1 ) or (Val2_Null^ = - 1 ) then
    Result_Null^:= - 1 
    else
    Result^:= Val1^ xor Val2^
end;

exports
  lib_xor index  0 ;

begin
end.

Val1_Null & Val2_Null - индикаторы на передаваемые NULL - значения в UDF. Result_Null - признак возвращаемого результата = NULL.
Подробнее можно посмотреть в Application Development Guide .

2. Затем копируешь DLL в [$SQLLIB]\function

3. Для БД пишешь CREATE FUNCTION...
См. SQL Reference
...
Рейтинг: 0 / 0
Битовые операции
    #32281702
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Da mne pod linux nado

a chto na C UDF napisat\ nelsya?
ved\ mogno no ya neynayu kak?

ya tut nashol primerchik no ne znayu horosh li on
ocenite pogaluysta

Код:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
CREATE FUNCTION BITAND (N1 Integer, N2 Integer)
 RETURNS Integer
 SPECIFIC BITANDOracle
 LANGUAGE SQL
 CONTAINS SQL
 NO EXTERNAL ACTION
 DETERMINISTIC
 RETURN 
WITH
 Repeat (S, M1, M2, Ans) AS
(Values (0, N1, N2, 0)
Union All
Select S+1, M1/2, M2/2, Ans+MOD(M1,2)*MOD(M2,2)*power(2,S)
  From Repeat
 Where M1 > 0
   AND M2 > 0
   AND S < 32
)
SELECT ANS
  FROM Repeat
 WHERE S = (SELECT MAX(S)
              FROM Repeat)
...
Рейтинг: 0 / 0
Битовые операции
    #32281836
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это полхой примерчик :)




----------- blablabla.cpp -----------------
extern "C" int or (int a, int b) { return a|b;}
extern "C" int and (int a, int b) {...}
...............................................
----------------------------------------
gcc -share blablabla.cpp (вроде так забыл уже все ключики в линуксе

----------- SQL ------------------------
create function myor( int, int)
returns integer
...
language c
parameter style general
external name 'blablabla.so!or'
...........

------------------------------------------
...
Рейтинг: 0 / 0
Битовые операции
    #32281841
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spasibo budem smotret' i probyvat'
...
Рейтинг: 0 / 0
Битовые операции
    #32281852
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>gcc -share blablabla.cpp
g++ -share blablabla.cpp
...
Рейтинг: 0 / 0
Битовые операции
    #32281901
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Okram,
выкинь мой пример. возврат результата из ф-ции осуществл. немножко по другому.


/*
CREATE FUNCTION OR(INT,INT)
RETURNS INT
LANGUAGE C
EXTERNAL NAME ' '
DETERMINISTIC
NO SQL
NO EXTERNAL ACTION
PARAMETER STYLE SQL
ALLOW PARALLEL;
*/


void OR(int *a,int *b,int *out,short *inind,
short *outind,char *sqlstate,char *funcname,char *msgtext);

p.s.
и што это со мной сегодня происходит...
...
Рейтинг: 0 / 0
Битовые операции
    #32281930
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Teper' ya uge sovsem zaputalsya
Nu tak chto i gde pisat' i kompilit' ???
...
Рейтинг: 0 / 0
Битовые операции
    #32281990
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ф-ция на с немного другая.

сишник
extern "C"
void or(int *a, int *b, int *out, short *inind, short *outind);
{
*outind = -1;
if(0>=inind[0] || 0>=inind ) return;
*out = (*a)|(*b);
*outind = 1;
}



и парамер стайл должен быть генерал with nulls
...
Рейтинг: 0 / 0
Битовые операции
    #32281993
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ф-ция на с немного другая.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
сишник
extern  "C" 
void or(int *a, int *b, int *out, short *inind, short *outind); 
{
  *outind = - 1 ;
  if( 0 >=inind[ 0 ] ||  0 >=inind[ 1 ] ) return;
  *out = (*a)|(*b); 
  *outind =  1 ;
}


там все съехало
...
Рейтинг: 0 / 0
Битовые операции
    #32282054
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
delayu
gcc or.c

i cho poluchayu

or.c:3: error: parse error before string constant
or.c:10: error: `a' undeclared here (not in a function)
or.c:10: error: `b' undeclared here (not in a function)
or.c:10: warning: data definition has no type or storage class
or.c:12: warning: initialization makes pointer from integer without a cast
or.c:12: warning: data definition has no type or storage class
or.c:14: error: parse error before '}' token
or.c:14:2: warning: no newline at end of file
...
Рейтинг: 0 / 0
Битовые операции
    #32282073
Фотография NewYear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
либо
g++ -share or.c

либо снеси строку
' extern "C" '
и
gсс -share or.c
...
Рейтинг: 0 / 0
Битовые операции
    #32282123
Okram
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
toge samoye :(((
nado RTFM
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Битовые операции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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