मैं mysql के लिए एक कस्टम उचित उपयोगकर्ता परिभाषित फ़ंक्शन लिखने की कोशिश कर रहा हूं, इसलिए मैंने अपना खुद का निर्माण करने के लिए उदाहरण के रूप में http://www.mysqludf.org/index.php से str_ucwords फ़ंक्शन लिया।उचित केस mysql udf
my_bool str_ucwords_init(UDF_INIT *initid, UDF_ARGS *args, char *message)
{
/* make sure user has provided exactly one string argument */
if (args->arg_count != 1 || args->arg_type[0] != STRING_RESULT || args->args[0] == NULL)
{
strcpy(message,"str_ucwords requires one string argument");
return 1;
}
/* str_ucwords() will not be returning null */
initid->maybe_null=0;
return 0;
}
char *str_ucwords(UDF_INIT *initid, UDF_ARGS *args,
char *result, unsigned long *res_length,
char *null_value, char *error)
{
int i;
int new_word = 0;
// copy the argument string into result
strncpy(result, args->args[0], args->lengths[0]);
*res_length = args->lengths[0];
// capitalize the first character of each word in the string
for (i = 0; i < *res_length; i++)
{
if (my_isalpha(&my_charset_latin1, result[i]))
{
if (!new_word)
{
new_word = 1;
result[i] = my_toupper(&my_charset_latin1, result[i]);
}
}
else
{
new_word = 0;
}
}
return result;
}
यह ठीक काम करता है अगर मैं select str_ucwords("test string");
कोशिश लेकिन अगर मैं select str_ucwords(name) from name;
की तरह एक डेटाबेस से क्षेत्रों का चयन करने के लिए प्रयास करें मैं कुछ भी नहीं लौटे मिलता है।
मैं इस फ़ंक्शन को कैसे बदलूं ताकि यह मुझे डेटाबेस पर फ़ील्ड से डेटा खींच सके?
मैंने पहले से ही init फ़ंक्शन से args->arg_type[0] != STRING_RESULT
को हटाने का प्रयास किया है।