I am trying to call a C function in a sqlite 2 trigger.
Here is the code
'''''''''''''''''''''''''''''''''''''''
#include <stdio.h>
#include <sqlite.h>
#include <assert.h>
void capitalize_alternate(sqlite_func *context, int argc, const char **argv)
{
int i;
static char str[80];
for (i=0; i<strlen(argv[0]); i++) {
if (i%2 == 0)
str[i] = toupper(argv[0][i]);
else
str[i] = tolower(argv[0][i]);
}
str[i] = '\0';
sqlite_set_result_string(context, str, -1);
}
int main()
{
char *errmsg;
char **result;
char str[80];
int ret, rows, cols, i, j;
sqlite *db = sqlite_open("/home/test", 0777, &errmsg);
if (db == 0)
{
fprintf(stderr, "Could not open database: %s\n", errmsg);
sqlite_freemem(errmsg);
exit(1);
}
sqlite_create_function(db, "altcaps", 1, capitalize_alternate, NULL);
ret = sqlite_exec(db,
" CREATE TRIGGER example \n"
" AFTER INSERT ON contacts \n"
" BEGIN \n"
" SELECT altcaps('this is a test'); \n"
" END", NULL, NULL, &errmsg);
if (ret != SQLITE_OK)
{
fprintf(stderr, "SQL Error: %s\n", errmsg);
}
sqlite_close(db);
return 0;
}
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
when I complile the progrm with gcc
gcc -Wall firsttprog.c -o firstprog -lsqlite
./firstprog
It compiles without error and it creates the trigger "example"
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sqlite> select * from sqlite_master;
table|contacts|contacts|3|create table contacts (int a)
table|requests|requests|4|create table requests(a int)
trigger|example|contacts|0|CREATE TRIGGER example
AFTER INSERT ON contacts
BEGIN
SELECT altcaps('this is a test');
END
sqlite>insert into contacts values(2);
SQL error: no such function: altcaps
sqlite>
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Here it says no such function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Could anyone help me with that please.
Regards,
Nick
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users