SQL/MySQL/Function/Define Function — различия между версиями

Материал из SQL эксперт
Перейти к: навигация, поиск
м (1 версия)
 
м (1 версия)
 
(нет различий)

Текущая версия на 10:16, 26 мая 2010

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;
}