I'm in the process of writing my first UDF and would appreciate some help.
I am pulling data from a table like:
SELECT payload_time,
SUBSTR(BINARY(frame_data),
FLOOR(foffset/8)+1,
CEIL((flength + (foffset %8 ))/8))
FROM RawMajorFrames
WHERE raw_major_frame_id=rfid
INTO ptime,fdata;
frame_data is type BLOB. It is raw data collected. The substr will get
the specific bytes I'm interested in. What I need to do, is if the data
is <= 8bytes, convert it to a BIGINT, so I can do some masking on the
data.
So I am writing a UDF to do the job, but I am apparently unfamiliar with
the Mysql data types and how I can convert them.
In a procedure.
DECLARE fdata_bigint BIGINT UNSIGNED;
SELECT BlobToInt(binary(fdata)) INTO fdata_bigint;
my_bool BlobToInt_init( UDF_INIT* initid, UDF_ARGS* args, char* message )
{
if (args->arg_count != 1)
{
strcpy(message,"Wrong arguments to BlobToInt; should be
BlobToInt(blob)");
return 1;
}
return 0;
}
longlong BlobToInt( UDF_INIT* initid, UDF_ARGS* args, char* is_null, char
*error )
{
longlong tmplong = *((longlong*)args->args[0]);
return tmplong;
}
I guess I was just assuming I could just cast the data as the type I want,
but that doesn't seem to work. The function returns a 0.
Any help would be appreciated.
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]