Define function in C and call by SQL : Define Function « Function « SQL / MySQL






Define function in C and call by SQL

 
/* Use the function */  
CREATE FUNCTION FormatName
RETURNS STRING
SONAME 'C:\\MySQL\\lib\\MySQLFunction.dll';

/* Def file */
LIBRARY "MySQLFunction"
EXPORTS
   FormatName

/* .c file */
#include <string>

#include <my_global.h>
#include <my_sys.h>
#include <mysql.h>

using namespace std;

char* FormatName(UDF_INIT *initid, UDF_ARGS *args,
                 char *result, unsigned long *length,
                 char *is_null, char *error)
{
   // Retrieve the Name parameter from the args parameter
   char* fullName = new char[args->lengths[0]];
   fullName = args->args[0];

   // Convert from char* to string
   string strName = fullName;

   // Trim whitespace from end of string
   int i = strName.length();
   while (strName[i] == ' ' || strName[i] == '\0') 
       i--;
   string trimName = strName.substr(0, i + 1);

   // Arrange in 'LastName, FirstName' format
   int spaceIndex = trimName.find_first_of(" ");
   string firstName = trimName.substr(0, spaceIndex);
   string lastName = trimName.substr(spaceIndex + 1);
   string formattedName = lastName + ", " + firstName;

   // Convert back to char* and set the length argument
   char* fmtName = new char[];
   formattedName.copy(result, string::npos);
   *length = static_cast<unsigned long>(i + 2);

   return result;
}

           
         
  








Related examples in the same category

1.Arithmetic Functions
2.Comparison Functions,Tests, Branching
3.Calculating, Formatting, and Transformation Functions