> can what Walter is doing be done in other languages, namely Adobe Flex > AIR/ActionScript?
I don't know Flex's API but I bet you have documentation for that and can find there whether it has registration of user-defined functions or not. > Is "return [expr { $a + $b }]" also written in TCL? Yes. > Where does a function registered with the SQLite engine live? Is it > stored inside the database? No. It lives in your application and SQLite stores in the connection only pointer to the function that it should call. > Do the functions one registers in SQLite with the "function" method have > at their disposal only simple scalar operators, or can there be loop > control structures? Whatever your language supports although I believe you cannot (or have certain restrictions on) call SQLite API back from inside such function. Pavel On Thu, Nov 19, 2009 at 10:58 AM, Tim Romano <tim.rom...@yahoo.com> wrote: > Perhaps the list can help me to get beyond some fundamental igorance here. > > What is the name for what Walter is doing in the two lines below, and > can what Walter is doing be done in other languages, namely Adobe Flex > AIR/ActionScript? > > proc sql_addnum { a b } { return [expr { $a + $b }] } > db function addnum sql_addnum > > > I see "function" documented here http://www.sqlite.org/tclsqlite.html > and "proc" appears to create a TCL procedure. > > Is "return [expr { $a + $b }]" also written in TCL? > > Where does a function registered with the SQLite engine live? Is it > stored inside the database? > Do the functions one registers in SQLite with the "function" method have > at their disposal only simple scalar operators, or can there be loop > control structures? > > Thanks > Tim Romano > > Walter Dnes wrote: >> Whilst trying to get a TCL script to create a function in SQLite I ran >> into problems and did a lot of Googling. I got very tired of seeing the >> same old same old... >> >> proc sql_sqrt {x} {return [expr {sqrt($x)}]} >> db function sqrt sql_sqrt >> >> It didn't help me because it used only one parameter. It didn't say >> anything about you >> - *MUST NOT* have commas between parameters in the function definition >> - *MUST* have commas between parameters when actually calling it >> >> I spent several hours figuring this out. Here's a working example... >> >> package require sqlite3 >> sqlite3 db :memory: >> db eval {create table dual(x varchar(1))} >> db eval {insert into dual values(' ')} >> proc sql_addnum { a b } { return [expr { $a + $b }] } >> db function addnum sql_addnum >> db eval {select 'Hello world' as x from dual} {puts stdout "$x"} >> db eval {select 99999999999 as y from dual} {puts stdout "$y"} >> db eval {select addnum(1, 2) as z from dual} {puts stdout "$z"} >> db close >> >> And the output is... >> >> Hello world >> 99999999999 >> 3 >> >> Use this code as an example, and it may save someone else some time >> down the road. >> >> >> ------------------------------------------------------------------------ >> >> >> No virus found in this incoming message. >> Checked by AVG - www.avg.com >> Version: 8.5.425 / Virus Database: 270.14.73/2512 - Release Date: 11/18/09 >> 19:41:00 >> >> > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users