SQL/MySQL/Function/Define Function — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 13:46, 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;
}