RE: [sqlite] no errors,but not executed: Stored procedures in triggers

2006-03-24 Thread Chethana, Rao \(IE10\)
When I create trigger by giving select sp_dosomethingfunc();  THE
TRIGGER IS GETTING CREATED without any errors & stmts within main r
executed, but stmts within this custom function- >
sp_dosomethingfunc(sqlite3_context *context, int argc,sqlite3_value
**argv)--  r not excuted. Also what is that 

sqlite3_context *context doing here? Y is it used?  

I want to make use of exec within this custom function. How shall I use
it?

Awaiting reply.

-Original Message-
From: Jay Sprenkle [mailto:[EMAIL PROTECTED] 
Sent: Friday, March 24, 2006 8:18 PM
To: sqlite-users@sqlite.org
Subject: Re: [sqlite] no errors,but not executed: Stored procedures in
triggers

On 3/24/06, Chethana, Rao (IE10) <[EMAIL PROTECTED]> wrote:
> My problem is not with cascading or using recursive triggers.
> Actually,
> I am using  "sqlite3_create_function"  to execute some queries(like
> insert or update etc.) but the control does not pass to the custom
> function at all, ie., say a user-defined function
>
> sp_dosomethingfunc(sqlite3_context *context, int argc,sqlite3_value
> **argv)
>  {
> Do something or execute some queries...
> ..etc
>  }
>
> /* from main() I'm calling the above function using
> sqlite3_create_function*/
> int main()
>
>  {
>/* after using sqlite_open */
>
>sqlite3_create_function()
>
>/*  exec function is executed, but control is
> not passed to sp_dosomethingfunc, how do I make stmts inside this
custom
> function get executed?  */
>
>sqlite3_exec(.)
>  }
>
>  /* and this  sp_dosomethingfunc, I'm calling from triggers. I'm not
> getting any error. But this function is not executed */

your function would be executed by something like

select sp_dosomethingfunc

Since it's a function you have to do something to evaluate it.

Since your trigger is 'calling' the function, are you sure your
trigger is being run?


Re: [sqlite] no errors,but not executed: Stored procedures in triggers

2006-03-24 Thread Jay Sprenkle
On 3/24/06, Chethana, Rao (IE10) <[EMAIL PROTECTED]> wrote:
> My problem is not with cascading or using recursive triggers.
> Actually,
> I am using  "sqlite3_create_function"  to execute some queries(like
> insert or update etc.) but the control does not pass to the custom
> function at all, ie., say a user-defined function
>
> sp_dosomethingfunc(sqlite3_context *context, int argc,sqlite3_value
> **argv)
>  {
> Do something or execute some queries...
> ..etc
>  }
>
> /* from main() I'm calling the above function using
> sqlite3_create_function*/
> int main()
>
>  {
>/* after using sqlite_open */
>
>sqlite3_create_function()
>
>/*  exec function is executed, but control is
> not passed to sp_dosomethingfunc, how do I make stmts inside this custom
> function get executed?  */
>
>sqlite3_exec(.)
>  }
>
>  /* and this  sp_dosomethingfunc, I'm calling from triggers. I'm not
> getting any error. But this function is not executed */

your function would be executed by something like

select sp_dosomethingfunc

Since it's a function you have to do something to evaluate it.

Since your trigger is 'calling' the function, are you sure your
trigger is being run?


[sqlite] no errors,but not executed: Stored procedures in triggers

2006-03-24 Thread Chethana, Rao \(IE10\)
My problem is not with cascading or using recursive triggers.
Actually,
I am using  "sqlite3_create_function"  to execute some queries(like
insert or update etc.) but the control does not pass to the custom
function at all, ie., say a user-defined function
 
sp_dosomethingfunc(sqlite3_context *context, int argc,sqlite3_value
**argv)
 { 
Do something or execute some queries...
..etc
 }

/* from main() I'm calling the above function using
sqlite3_create_function*/
int main()
 
 {
   /* after using sqlite_open */

   sqlite3_create_function()

   /*  exec function is executed, but control is 
not passed to sp_dosomethingfunc, how do I make stmts inside this custom
function get executed?  */ 

   sqlite3_exec(.)
 }

 /* and this  sp_dosomethingfunc, I'm calling from triggers. I'm not
getting any error. But this function is not executed */

 Pls do reply ASAP.



















-Original Message-
From: Igor Tandetnik [mailto:[EMAIL PROTECTED] 
Sent: Friday, March 24, 2006 6:38 PM
To: SQLite
Subject: [sqlite] Re: Stored procedures in triggers

A small correction: I was wrong about SQLite not supporting cascading 
triggers. Cascading triggers are supported, recursive triggers are not. 
That is, if you have an insert trigger on table A which, say, inserts 
into table B, and there's an insert trigger on table B, it will run. But

if this latter trigger turns around and inserts into table A, the A 
trigger won't run again.

Igor Tandetnik

Ran <[EMAIL PROTECTED]> wrote:
> See the email of Igor Tandetnik from 18-Dec-2005:
>
> "Vishal Kashyap" wrote
>> Is their any way we can write simple stored procedures or functions
>> in sqlite. If yes please do guide me I need this functionality in one
>> of my open source project.
>
> Not in the usual sense, meaning some language that gets stored in the
> database itself together with the data. The only thing that comes
> somewhat close is a trigger. It is possible to create a poor man's
> stored procedure like this:
>
> create table sp_dosomething (param1 int, param2 char);
> create trigger sp_dosomething_impl
> instead of insert on sp_dosomething
> begin
> -- one or more sql statements possibly referring to
> -- new.param1 and new.param2
> end;
>
> -- To invoke:
> insert into sp_dosomething values(1, 'hello');
>
>
> Note that triggers are rather limited in what they can do. They are
> just
> a bunch of SQL statements, there is no control flow (loops, if then
> else, goto) beyond what little you can implement in pure SQL. They
> cannot return values, except indirectly by inserting or updating some
> table. SQLite does not support cascading triggers, so if your "stored
> procedure" manipulates some table to which regular triggers are
> attached
> (perhaps ensuring data integrity), those triggers won't run.
>
>
> SQLite supports custom functions - see sqlite3_create_function[16].
> You
> write them in C (or any other language that has bindings to SQLite
> API)
> and you have to install them every time you open a DB handle with
> sqlite3_open, before you can refer to them in your SQL statements.
> They
> are not stored in the database file itself.
>
> Finally, SQLite prepared statements (sqlite_prepare) can be thought of
> as simple stored procedures defined in your program. Similar to custom
> functions, you can prepare a statement right after opening the
> database,
> then keep it around.
>
> Igor Tandetnik
>
>
>
> Ran
>
>
> On 3/24/06, Chethana, Rao (IE10)
> <[EMAIL PROTECTED]> wrote:
>>
>>   Hi,
>>
>> Can you tell me how to create a stored procedure in an sqlite3
>> database and use the same in a trigger? Please provide an example
>> (as complete as possible). In the stored procedure I need to execute
>> few queries on some tables. Can you tell me how to do that also?
>>
>> Any help is deeply appreciated.
>>
>> Best Regards,
>>
>> Chethana