Re: convert help

2006-01-21 Thread Gleb Paharenko
Hello.

> ERROR 1314 (0A000): PREPARE is not allowed in stored procedures

PREPARE in the stored procedures should work in the latest release (5.0.18).




David Godsey wrote:
> Thank you.  I tried this outside of the procedure and it works. However In
> MYSQL 5 I get:
> ERROR 1314 (0A000): PREPARE is not allowed in stored procedures
> 
> Is there a way without needing to use prepare?
> 
> Any idea why CAST(fdata AS UNSIGNED) doesn't work?
> 
>

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]



Re: convert help

2006-01-20 Thread David Godsey
Thank you.  I tried this outside of the procedure and it works. However In
MYSQL 5 I get:
ERROR 1314 (0A000): PREPARE is not allowed in stored procedures

Is there a way without needing to use prepare?

Any idea why CAST(fdata AS UNSIGNED) doesn't work?

David Godsey

> Hello.
>
> You can use this technique:
> drop procedure if exists test20;
> DELIMITER $$
> create procedure test20()
> BEGIN
> DECLARE fdata BLOB;
>   DECLARE foffset INT UNSIGNED;
>   DECLARE flength INT UNSIGNED;
> DECLARE tmp_int BIGINT UNSIGNED;
>
> SELECT 0xABCDEF0123456789 INTO fdata;
> SELECT 14 INTO foffset;
> SELECT 7 INTO flength;
>
> SELECT SUBSTR(BINARY(fdata),
> FLOOR(foffset/8)+1,
> CEIL((flength + (foffset %8 ))%8))
> INTO fdata;
>
> SELECT HEX(fdata);
> set @a=concat('0x',hex(fdata));
> drop temporary table if exists ta;
> create temporary table ta(a bigint);
> set @s=concat('insert into ta set a=(',@a,'+0)');
> select @s;
> prepare st1 from @s;
> execute st1 ;
> deallocate prepare st1;
> select @b:=a from ta;
> select @b into tmp_int;
> drop temporary table ta;
> --SELECT CONVERT(fdata,BIGINT) INTO tmp_int;
> SELECT HEX(tmp_int);
> END
> $$
> DELIMITER ;
> call test20();
>
> [EMAIL PROTECTED] mysql-debug-5.0.18-linux-i686-glibc23]$ lmysql  HEX(fdata)
> CDEF012345
> @s
> insert into ta set a=(0xCDEF012345+0)
> @b:=a
> 884478124869
> HEX(tmp_int)
> CDEF012345
>
>
>
>
> David Godsey wrote:
>> I am trying to convert binary data to a bigint so I can do bitwise
>> operations on the data, and I'm having trouble doing it.
>>
>> I noticed that if I have binary data and I:
>> select data>>1; I get 0 (not what I'm expecting).
>>
>> Here is a test procedure I wrote:
>>
>> create procedure test20 ()
>>BEGIN
>> DECLARE fdata BLOB;
>>   DECLARE foffset INT UNSIGNED;
>>   DECLARE flength INT UNSIGNED;
>> DECLARE tmp_int BIGINT UNSIGNED;
>>
>> SELECT 0xABCDEF0123456789 INTO fdata;
>> SELECT 14 INTO foffset;
>> SELECT 7 INTO flength;
>>
>> SELECT SUBSTR(BINARY(fdata),
>> FLOOR(foffset/8)+1,
>> CEIL((flength + (foffset %8 ))%8))
>> INTO fdata;
>>
>> SELECT HEX(fdata);
>> SELECT CONVERT(fdata,BIGINT) INTO tmp_int;
>> SELECT HEX(tmp_int);
>> END
>> The last two selects are added to show what I would like to do, but have
>> not been able to get it to work.
>>
>> Any help would be great.  Thanks in advance.
>>
>> Accomplishing the impossible means only that the boss will add it to
>> your
>> regular duties.
>>
>> David Godsey
>>
>> Accomplishing the impossible means only that the boss will add it to
>> your
>> regular duties.
>>
>> David Godsey
>>
>
>
> --
> For technical support contracts, goto https://order.mysql.com/?ref=ensita
> This email is sponsored by Ensita.NET http://www.ensita.net/
>__  ___ ___   __
>   /  |/  /_ __/ __/ __ \/ /Gleb Paharenko
>  / /|_/ / // /\ \/ /_/ / /__   [EMAIL PROTECTED]
> /_/  /_/\_, /___/\___\_\___/   MySQL AB / Ensita.NET
><___/   www.mysql.com
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:
> http://lists.mysql.com/[EMAIL PROTECTED]
>


Accomplishing the impossible means only that the boss will add it to your
regular duties.

David Godsey


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]



Re: convert help

2006-01-20 Thread Gleb Paharenko
Hello.

You can use this technique:
drop procedure if exists test20;
DELIMITER $$
create procedure test20()
BEGIN
DECLARE fdata BLOB;
  DECLARE foffset INT UNSIGNED;
  DECLARE flength INT UNSIGNED;
DECLARE tmp_int BIGINT UNSIGNED;

SELECT 0xABCDEF0123456789 INTO fdata;
SELECT 14 INTO foffset;
SELECT 7 INTO flength;

SELECT SUBSTR(BINARY(fdata),
FLOOR(foffset/8)+1,
CEIL((flength + (foffset %8 ))%8))
INTO fdata;

SELECT HEX(fdata);
set @a=concat('0x',hex(fdata));
drop temporary table if exists ta;
create temporary table ta(a bigint);
set @s=concat('insert into ta set a=(',@a,'+0)');
select @s;
prepare st1 from @s;
execute st1 ;
deallocate prepare st1;
select @b:=a from ta;
select @b into tmp_int;
drop temporary table ta;
--SELECT CONVERT(fdata,BIGINT) INTO tmp_int;
SELECT HEX(tmp_int);
END
$$
DELIMITER ;
call test20();

[EMAIL PROTECTED] mysql-debug-5.0.18-linux-i686-glibc23]$ lmysql  I am trying to convert binary data to a bigint so I can do bitwise
> operations on the data, and I'm having trouble doing it.
> 
> I noticed that if I have binary data and I:
> select data>>1; I get 0 (not what I'm expecting).
> 
> Here is a test procedure I wrote:
> 
> create procedure test20 ()
>BEGIN
> DECLARE fdata BLOB;
>   DECLARE foffset INT UNSIGNED;
>   DECLARE flength INT UNSIGNED;
> DECLARE tmp_int BIGINT UNSIGNED;
> 
> SELECT 0xABCDEF0123456789 INTO fdata;
> SELECT 14 INTO foffset;
> SELECT 7 INTO flength;
> 
> SELECT SUBSTR(BINARY(fdata),
> FLOOR(foffset/8)+1,
> CEIL((flength + (foffset %8 ))%8))
> INTO fdata;
> 
> SELECT HEX(fdata);
> SELECT CONVERT(fdata,BIGINT) INTO tmp_int;
> SELECT HEX(tmp_int);
> END
> The last two selects are added to show what I would like to do, but have
> not been able to get it to work.
> 
> Any help would be great.  Thanks in advance.
> 
> Accomplishing the impossible means only that the boss will add it to your
> regular duties.
> 
> David Godsey
> 
> Accomplishing the impossible means only that the boss will add it to your
> regular duties.
> 
> David Godsey
> 


-- 
For technical support contracts, goto https://order.mysql.com/?ref=ensita
This email is sponsored by Ensita.NET http://www.ensita.net/
   __  ___ ___   __
  /  |/  /_ __/ __/ __ \/ /Gleb Paharenko
 / /|_/ / // /\ \/ /_/ / /__   [EMAIL PROTECTED]
/_/  /_/\_, /___/\___\_\___/   MySQL AB / Ensita.NET
   <___/   www.mysql.com

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]