Sophie

Sophie

distrib > Fedora > 14 > x86_64 > media > updates > by-pkgid > 71d40963b505df4524269198e237b3e3 > files > 76

virtuoso-opensource-doc-6.1.4-2.fc14.noarch.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
 <head profile="http://internetalchemy.org/2003/02/profile">
  <link rel="foaf" type="application/rdf+xml" title="FOAF" href="http://www.openlinksw.com/dataspace/uda/about.rdf" />
  <link rel="schema.dc" href="http://purl.org/dc/elements/1.1/" />
  <meta name="dc.title" content="9. SQL Procedure Language Guide" />
  <meta name="dc.subject" content="9. SQL Procedure Language Guide" />
  <meta name="dc.creator" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="dc.copyright" content="OpenLink Software, 1999 - 2009" />
  <link rel="top" href="index.html" title="OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="search" href="/doc/adv_search.vspx" title="Search OpenLink Virtuoso Universal Server: Documentation" />
  <link rel="parent" href="sqlprocedures.html" title="Chapter Contents" />
  <link rel="prev" href="createassembly.html" title="CREATE ASSEMBLY Syntax - External Libraries" />
  <link rel="next" href="ASYNCEXECMULTITHREAD.html" title="Asynchronous Execution and Multithreading in Virtuoso/PL" />
  <link rel="shortcut icon" href="../images/misc/favicon.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="doc.css" />
  <link rel="stylesheet" type="text/css" href="/doc/translation.css" />
  <title>9. SQL Procedure Language Guide</title>
  <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" />
  <meta name="author" content="OpenLink Software Documentation Team ;&#10;" />
  <meta name="copyright" content="OpenLink Software, 1999 - 2009" />
  <meta name="keywords" content="" />
  <meta name="GENERATOR" content="OpenLink XSLT Team" />
 </head>
 <body>
  <div id="header">
    <a name="createexthostproc" />
    <img src="../images/misc/logo.jpg" alt="" />
    <h1>9. SQL Procedure Language Guide</h1>
  </div>
  <div id="navbartop">
   <div>
      <a class="link" href="sqlprocedures.html">Chapter Contents</a> | <a class="link" href="createassembly.html" title="CREATE ASSEMBLY Syntax - External Libraries">Prev</a> | <a class="link" href="ASYNCEXECMULTITHREAD.html" title="Asynchronous Execution and Multithreading in Virtuoso/PL">Next</a>
   </div>
  </div>
  <div id="currenttoc">
   <form method="post" action="/doc/adv_search.vspx">
    <div class="search">Keyword Search: <br />
        <input type="text" name="q" /> <input type="submit" name="go" value="Go" />
    </div>
   </form>
   <div>
      <a href="http://www.openlinksw.com/">www.openlinksw.com</a>
   </div>
   <div>
      <a href="http://docs.openlinksw.com/">docs.openlinksw.com</a>
   </div>
    <br />
   <div>
      <a href="index.html">Book Home</a>
   </div>
    <br />
   <div>
      <a href="contents.html">Contents</a>
   </div>
   <div>
      <a href="preface.html">Preface</a>
   </div>
    <br />
   <div class="selected">
      <a href="sqlprocedures.html">SQL Procedure Language Guide</a>
   </div>
    <br />
   <div>
      <a href="GENERALPRINCIPLES.html">General Principles</a>
   </div>
   <div>
      <a href="SCOPEOFDECLARATION.html">Scope of Declarations</a>
   </div>
   <div>
      <a href="sqlplDATATYPES.html">Data Types</a>
   </div>
   <div>
      <a href="RESULTSETS.html">Handling Result Sets</a>
   </div>
   <div>
      <a href="ARRAYS.html">Result Sets and Array Parameters</a>
   </div>
   <div>
      <a href="EXCEPTIONS.html">Exception Semantics</a>
   </div>
   <div>
      <a href="PLREF.html">Virtuoso/PL Syntax</a>
   </div>
   <div>
      <a href="EXECSQLPROCSELECT.html">Execute Stored Procedures via SELECT statement</a>
   </div>
   <div>
      <a href="EXECSQLPROCFORK.html">Execute Stored Procedures In Background</a>
   </div>
   <div>
      <a href="createassembly.html">CREATE ASSEMBLY Syntax - External Libraries</a>
   </div>
   <div class="selected">
      <a href="createexthostproc.html">CREATE PROCEDURE Syntax - External hosted procedures</a>
   </div>
   <div>
      <a href="ASYNCEXECMULTITHREAD.html">Asynchronous Execution and Multithreading in Virtuoso/PL</a>
   </div>
   <div>
      <a href="PERFTIPS.html">Performance Tips</a>
   </div>
   <div>
      <a href="PROCEDURES_TRANSACTIONS.html">Procedures and Transactions</a>
   </div>
   <div>
      <a href="twopcimplementation.html">Distributed Transaction &amp; Two Phase Commit</a>
   </div>
   <div>
      <a href="TRIGGERS.html">Triggers</a>
   </div>
   <div>
      <a href="charescaping.html">Character Escaping</a>
   </div>
   <div>
      <a href="PLSCROLLCRSRS.html">Virtuoso/PL Scrollable Cursors</a>
   </div>
   <div>
      <a href="plmodules.html">Virtuoso PL Modules</a>
   </div>
   <div>
      <a href="handlingplcondit.html">Handling Conditions In Virtuoso/PL Procedures</a>
   </div>
   <div>
      <a href="pldebugger.html">Procedure Language Debugger</a>
   </div>
   <div>
      <a href="rowlevelsecurity.html">Row Level Security</a>
   </div>
    <br />
  </div>
  <div id="text">
    <a name="createexthostproc" />
    <h2>9.11. CREATE PROCEDURE Syntax - External hosted procedures</h2>

    <p>Virtuoso provides a syntax shortcut for calling static method from hosted user defined types without first defining a Virtuoso external hosted user defined type:</p>
    <div>
      <pre class="programlisting">
CREATE (PROCEDURE|FUNCTION) &lt;local_name&gt; ([&lt;arg_def1&gt;, ...])
	[returns &lt;sql_datatype&gt;] LANGUAGE [JAVA|CLR] EXTERNAL NAME &#39;&lt;external_static_proc_name_literal&gt;&#39;

&lt;arg_def&gt; := [IN|OUT|INOUT] param_name &lt;data_type_spec&gt;

&lt;external_static_proc_name_literal&gt; = &lt;external_type_name_literal&gt;.&lt;static_proc_name&gt;</pre>
    </div>
<p>This compiles into an functional equivalent of :</p>
    <div>
      <pre class="programlisting">
create procedure &lt;local_name) ([&lt;arg_def1&gt;, ....])
{
  declare ret any;

  exec (&#39;
    create type &lt;local_name&gt;
      temporary self as ref 
        static method m1 ([&lt;arg_def1&gt;, ....]) 
           returns &lt;datatype&gt; EXTERNAL NAME &#39;&#39;&lt;static_proc_name&gt;&#39;&#39;
   &#39;);

  ret := &lt;local_name&gt;::m1 (....);

  exec (&#39;drop type &lt;local_name&gt;&#39;);

  return ret;
  }
  </pre>
    </div>

<p>For more details see <a href="udt.html#udtcreatetypestmt">CREATE TYPE</a> and <a href="runtimehosting.html">Runtime hosting</a> chapters.</p>
<a name="ex_createexthostproc_jvm" />
    <div class="example">
      <div class="exampletitle">CREATE PROCEDURE for a Java method:</div>
<p>Here is an example for CREATE PROCEDURE and the hosted Java VM:</p>
<div>
        <pre class="programlisting">
create procedure get_property (in x varchar) returns varchar language java external name &#39;java.lang.System.getProperty&#39;;</pre>
      </div>
<p>Here&#39;s how that procedure is called:</p>
<div>
        <pre class="programlisting">
SQL&gt; select get_property (&#39;java.vm.name&#39;);
callret
VARCHAR
_______________________________________________________________________________

Java HotSpot(TM) Client VM
</pre>
      </div>
</div>
<a name="ex_createexthostproc_clr" />
    <div class="example">
      <div class="exampletitle">CREATE PROCEDURE for a CLR method:</div>
<p>Here is an example for CREATE PROCEDURE and the hosted CLR:</p>
<div>
        <pre class="programlisting">
create procedure curr_thr_id () returns integer language CLR external name &#39;mscorlib/System.AppDomain.GetCurrentThreadId&#39;;</pre>
      </div>
<p>Here&#39;s how that procedure is called:</p>
<div>
        <pre class="programlisting">
SQL&gt; select curr_thr_id();
callret
INTEGER
_______________________________________________________________________________

2156
</pre>
      </div>
</div>
<table border="0" width="90%" id="navbarbottom">
    <tr>
        <td align="left" width="33%">
          <a href="createassembly.html" title="CREATE ASSEMBLY Syntax - External Libraries">Previous</a>
          <br />CREATE ASSEMBLY Syntax - External Libraries</td>
     <td align="center" width="34%">
          <a href="sqlprocedures.html">Chapter Contents</a>
     </td>
        <td align="right" width="33%">
          <a href="ASYNCEXECMULTITHREAD.html" title="Asynchronous Execution and Multithreading in Virtuoso/PL">Next</a>
          <br />Asynchronous Execution and Multithreading in Virtuoso/PL</td>
    </tr>
    </table>
  </div>
  <div id="footer">
    <div>Copyright© 1999 - 2009 OpenLink Software All rights reserved.</div>
   <div id="validation">
    <a href="http://validator.w3.org/check/referer">
        <img src="http://www.w3.org/Icons/valid-xhtml10" alt="Valid XHTML 1.0!" height="31" width="88" />
    </a>
    <a href="http://jigsaw.w3.org/css-validator/">
        <img src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!" height="31" width="88" />
    </a>
   </div>
  </div>
 </body>
</html>