>Does MySql support using it's own functions within this code?DROP FUNCTION IF EXISTS testconcat;

Works for me (though CONCAT maddenly trims its args):

DELIMITER |
CREATE FUNCTION testconcat( str CHAR(20) )
RETURNS CHAR(50)
DETERMINISTIC
BEGIN
 SET str = CONCAT( str, ' ', 'suffix' );
 RETURN str;
END;
|
DELIMITER ;
select testconcat('this has a ' ) as test;
+-------------------+
| test              |
+-------------------+
| this has a suffix |
+-------------------+
PB

-----

Andrey Dmitriev wrote:
Thanks, that works..
Next question Does MySql support using it's own functions within this code? E.g. I tried set str = select concat (str,'hello');
set str = concat (str, 'hello');
And it didn't seem to like either. Thanks,
-andrey

_____ From: Peter Brawley [mailto:[EMAIL PROTECTED] Sent: Friday, April 13, 2007 5:37 PM
To: Andrey Dmitriev
Cc: [EMAIL PROTECTED]
Subject: Re: creating a function in mysql



I've determined that I don't seem to be able to create functions at all.
Declare a delimiter, and lose the quote around the function name, eg

DROP FUNCTION IF EXISTS weighted_average;
DELIMITER |
CREATE FUNCTION weighted_average(n1 INT, n2 INT, n3 INT, n4 INT) RETURNS
int(11)
DETERMINISTIC
BEGIN
  DECLARE avg INT;
  SET avg = (n1+n2+n3*2+n4*4)/8;
  RETURN avg;
END;
|
DELIMITER ;

PB

-----

Andrey Dmitriev wrote:
   All,
I've been trying to create a function that will generate URLs so that
   I wouldn't have to wrote ugly SQL all the time. After no success,
   I've determined that I don't seem to be able to create functions at
   all. I am relatively new to mysql development (or management), so any
   advice is appreciated (coming from oracle world, btw)
[EMAIL PROTECTED] ~]# rpm -qa|grep -i mysql
   MySQL-shared-standard-5.0.18-0.rhel4
   mysql-gui-tools-5.0r3-1rhel4
   mysqlclient10-3.23.58-4.RHEL4.1
   mysql-administrator-5.0r3-1rhel4
   MySQL-server-pro-5.0.18-0.rhel4
   MySQL-client-pro-5.0.18-0.rhel4
following:
   http://www.databasejournal.com/features/mysql/article.php/10897_35698
   46_2
getting
   Database changed
   mysql> CREATE FUNCTION 'WEIGHTED_AVERAGE'(n1 INT, n2 INT, n3 INT, n4
   INT)
       ->  RETURNS int(11)
       ->     DETERMINISTIC
       -> BEGIN
       ->    DECLARE avg INT;
   ERROR 1064 (42000): You have an error in your SQL syntax; check the
   manual that corresponds to your MySQL server version for the right
   syntax to use near ''WEIGHTED_AVERAGE'(n1 INT, n2 INT, n3 INT, n4
   INT)
    RETURNS int(11)
       DETERMI' at line 1
   mysql>    SET avg = (n1+n2+n3*2+n4*4)/8;
   ERROR 1193 (HY000): Unknown system variable 'avg'
   mysql>    RETURN avg;
   ERROR 1064 (42000): You have an error in your SQL syntax; check the
   manual that corresponds to your MySQL server version for the right
   syntax to use near 'RETURN avg' at line 1
   mysql>   END
       ->
       -> ;
   ERROR 1064 (42000): You have an error in your SQL syntax; check the
   manual that corresponds to your MySQL server version for the right
   syntax to use near 'END' at line 1
   mysql>
_____

   No virus found in this incoming message.
   Checked by AVG Free Edition.
   Version: 7.5.446 / Virus Database: 269.4.0/759 - Release Date:
   4/12/2007 7:58 PM


------------------------------------------------------------------------

No virus found in this incoming message.
Checked by AVG Free Edition.
Version: 7.5.446 / Virus Database: 269.4.0/759 - Release Date: 4/12/2007 7:58 PM

Reply via email to