Please tell me how to define MySQL User Defined Function with in PHP...
I'm using following code.but it is not working.
it throws error :
" (1313) RETURN is only allowed in a FUNCTION "
$mysqli = new mysqli( $DBHost, $DBUserName, $DBPassword, $DBName );
$Query =
"CREATE PROCEDURE FunGetRegistryValue(OUT Param_RegistryKey varchar(40))
BEGIN
DECLARE vResult varchar(90);
SELECT iFnull(Value,'') INTO vResult FROM Project_Registry Where RegistryKey=Param_RegistryKey;
RETURN(vResult);
END;";
if( !$mysqli->query( $Query ) ) {
echo "Stored procedure creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
When i use FUNCTION keyword instead of PROCEDURE then i get syntax error...
Please give me example code for "VALUE RETURNING FUNCTION"
$mysqli = new mysqli( $DBHost, $DBUserName, $DBPassword, $DBName );
$Query =
"DROP FUNCTION IF EXISTS FunGetRegistryValue;
CREATE FUNCTION FunGetRegistryValue(Param_RegistryKey VARCHAR(40)) RETURNS VARCHAR(90) CHARSET latin1
DETERMINISTIC
BEGIN
DECLARE vResult VARCHAR(90);
SELECT IFNULL(VALUE,'') INTO vResult FROM Project_Registry WHERE RegistryKey=Param_RegistryKey;
RETURN(vResult);
END;";
if( !$mysqli->multi_query( $Query ) ) {
echo $mysqli->error;
exit();
}
DELIMITER $$
CREATE DEFINER=root@localhost
FUNCTION FunGetRegistryValue(Param_RegistryKey varchar(40))
RETURNS varchar(90)
CHARSET latin1 DETERMINISTIC
BEGIN
DECLARE vResult varchar(90);
SELECT iFnull(Value,'') INTO vResult
FROM Project_Registry Where RegistryKey=Param_RegistryKey;
RETURN(vResult);
END$$
DELIMITER ;
originally a comment by Fozia. I added it as an answer so that it's not a jumbled run on query and is legible.