Hi Quentin,

The example as defined in the docs link does work (apart from minor error in 
variable declarations which will be corrected) :

SQL> create procedure tb_is_empty (in tb varchar) {   declare state, msg, 
descs, rows any;   state := '00000';   exec (sprintf ('select 1 from %s', tb), 
state,     msg, vector (), 1, descs, rows);    if (state <> '00000')     signal 
(state, msg);    if (length (rows) = 0)     return 1;    else     return 0; };

Done. -- 1 msec.
SQL> create table hugh (c1 integer);                                            
                                                                                
                                                                            
Done. -- 10 msec.
SQL> select tb_is_empty ('sys_users');
tb_is_empty
VARCHAR
_______________________________________________________________________________

0

1 Rows. -- 29 msec.
SQL> select tb_is_empty ('hugh');
tb_is_empty
VARCHAR
_______________________________________________________________________________

1

1 Rows. -- 1 msec.
SQL> 

Thus what is the use case in which you are encountering a problem ?

Best Regards
Hugh Williams
Professional Services
OpenLink Software, Inc.      //              http://www.openlinksw.com/
Weblog   -- http://www.openlinksw.com/blogs/
LinkedIn -- http://www.linkedin.com/company/openlink-software/
Twitter  -- http://twitter.com/OpenLink
Google+  -- http://plus.google.com/100570109519069333827/
Facebook -- http://www.facebook.com/OpenLinkSoftware
Universal Data Access, Integration, and Management Technology Providers

On 2 Dec 2013, at 06:13, Quentin <quent...@clearbluewater.com.au> wrote:

> The documentation is a little outdated here: 
> http://docs.openlinksw.com/virtuoso/fn_exec.html
> 
> It describes catching exceptions with something like:
>   if (state <> '00000')
>     signal (state, msg);
> However this will not work and throws various errors.  Something like the 
> below will work:
> declare errorCode, errorMessage any;
> ...
> if (errorCode <> 0) 
>     signal (cast(errorCode as VARCHAR), errorMessage);
> 
> 
> The state/errorCode variable needs to be an integer for comparison and a 
> varchar or any in signal().
> 
> 
> -- 
> Quentin | Clear Blue Water Pty Ltd
> quent...@clearbluewater.com.au
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT 
> organizations don't have a clear picture of how application performance 
> affects their revenue. With AppDynamics, you get 100% visibility into your 
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk_______________________________________________
> Virtuoso-users mailing list
> Virtuoso-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/virtuoso-users

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
_______________________________________________
Virtuoso-users mailing list
Virtuoso-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtuoso-users

Reply via email to