|
|
|
Проблема со старшим разрядом
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Пишу я в MSSQL7 в процедуре в составе "UPDATE" следующую конструкцию : Field_31 = ( CASE WHEN ( @FIELDMSK & -2147483648 <> 0 ) THEN @Field_31 ELSE Field_31 END ), то есть в зависимости от старшего (31-го, если считать от 0) разряда "@FIELDMSK" я либо обновляю поле Field_31 на "@Field_31", либо оставляю прежним. Проблема в том, что с 31-м разрядом такую конструкцию не берет, невразумительно ругаясь "Invalid operator for data type. Operator equals boolean AND, type equals numeric.". Со всеми остальными разрядами все благополучно. Когда пишу в начале процедуры DECLARE @BIT31 INT SELECT @BIT31 = -2147483648 и затем в UPDATE Field_31 = ( CASE WHEN ( @FIELDMSK & @BIT31 <> 0 ) THEN @Field_31 ELSE Field_31 END ) - процедуру создает благополучно. Подскажите пож. - это бага MSSQL или я чего-то не знаю или не понимаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 12:28:50 |
|
||
|
Проблема со старшим разрядом
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 12:47:17 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32069566&tid=1818696]: |
0ms |
get settings: |
6ms |
get forum list: |
31ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 359ms |

| 0 / 0 |
