<!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="Function: vd_remote_proc_wrapper - Virtuoso Functions Guide" /> <meta name="dc.subject" content="Function: vd_remote_proc_wrapper - Virtuoso Functions Guide" /> <meta name="dc.creator" content="OpenLink Software Documentation Team ; " /> <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="functions.html" title="Chapter Contents" /> <link rel="prev" href="appendixa.html" title="Appendix" /> <link rel="next" href="functions.html#.html" title="" /> <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>Function: vd_remote_proc_wrapper - Virtuoso Functions Guide</title> <meta http-equiv="Content-Type" content="text/xhtml; charset=UTF-8" /> <meta name="author" content="OpenLink Software Documentation Team ; " /> <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="fn_vd_remote_proc_wrapper" /> <img src="../images/misc/logo.jpg" alt="" /> <h1>22. Virtuoso Functions Guide - vd_remote_proc_wrapper</h1> </div> <div id="navbartop"> <div> <a class="link" href="functions.html">Chapter Contents</a> | <a class="link" href="fn_vd_remote_data_source.html" title="vd_remote_data_source">Prev</a> | <a class="link" href="fn_vd_remote_table.html" title="vd_remote_table">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> <a class="selected" href="functions.html">Virtuoso Functions Guide</a> </div> <br /> <div> <a href="functions.html#admin">Administration</a> </div> <div> <a href="functions.html#aggr">Aggregate Functions</a> </div> <div> <a href="functions.html#array">Array Manipulation</a> </div> <div> <a href="functions.html#bpel">BPEL APIs</a> </div> <div> <a href="functions.html#backup">Backup</a> </div> <div> <a href="functions.html#compression">Compression</a> </div> <div> <a href="functions.html#cursors">Cursor</a> </div> <div> <a href="functions.html#time">Date & Time Manipulation</a> </div> <div> <a href="functions.html#debug">Debug</a> </div> <div> <a href="functions.html#dict">Dictionary Manipulation</a> </div> <div> <a href="functions.html#encoding">Encoding & Decoding</a> </div> <div> <a href="functions.html#file">File Manipulation</a> </div> <div> <a href="functions.html#ft">Free Text</a> </div> <div> <a href="functions.html#hash">Hashing / Cryptographic</a> </div> <div> <a href="functions.html#ldap">LDAP</a> </div> <div> <a href="functions.html#localization">Locale</a> </div> <div> <a href="functions.html#mail">Mail</a> </div> <div> <a href="functions.html#misc">Miscellaneous</a> </div> <div> <a href="functions.html#number">Number</a> </div> <div> <a href="functions.html#phrz">Phrases</a> </div> <div> <a href="functions.html#rdf">RDF data</a> </div> <div> <a class="selected" href="functions.html#rmt">Remote SQL Data Source</a> </div> <div class="selected"> <div> <a href="fn_att_local_name.html">att_local_name</a> </div> <div> <a href="fn_quote_dotted.html">quote_dotted</a> </div> <div> <a href="fn_rclose.html">rclose</a> </div> <div> <a href="fn_rexecute.html">rexecute</a> </div> <div> <a href="fn_rmoreresults.html">rmoreresults</a> </div> <div> <a href="fn_rnext.html">rnext</a> </div> <div> <a href="fn_rstmtexec.html">rstmtexec</a> </div> <div> <a href="fn_sql_columns.html">sql_columns</a> </div> <div> <a href="fn_sql_config_data_sources.html">sql_config_data_sour...</a> </div> <div> <a href="fn_sql_data_sources.html">sql_data_sources</a> </div> <div> <a href="fn_sql_driver_connect.html">sql_driver_connect</a> </div> <div> <a href="fn_sql_get_installed_drivers.html">sql_get_installed_dr...</a> </div> <div> <a href="fn_sql_get_private_profile_string.html">sql_get_private_prof...</a> </div> <div> <a href="fn_sql_gettypeinfo.html">sql_gettypeinfo</a> </div> <div> <a href="fn_sql_primary_keys.html">sql_primary_keys</a> </div> <div> <a href="fn_sql_procedures.html">sql_procedures</a> </div> <div> <a href="fn_sql_remove_dsn_from_ini.html">sql_remove_dsn_from_...</a> </div> <div> <a href="fn_sql_special_columns.html">sql_special_columns</a> </div> <div> <a href="fn_sql_statistics.html">sql_statistics</a> </div> <div> <a href="fn_sql_tables.html">sql_tables</a> </div> <div> <a href="fn_sql_transact.html">sql_transact</a> </div> <div> <a href="fn_sql_write_file_dsn.html">sql_write_file_dsn</a> </div> <div> <a href="fn_sql_write_private_profile_string.html">sql_write_private_pr...</a> </div> <div> <a href="fn_vd_remote_data_source.html">vd_remote_data_sourc...</a> </div> <div> <a class="selected" href="fn_vd_remote_proc_wrapper.html">vd_remote_proc_wrapp...</a> </div> <div> <a href="fn_vd_remote_table.html">vd_remote_table</a> </div> <div> <a href="fn_vd_statistics.html">vd_statistics</a> </div> <div> <a href="fn_vdd_disconnect_data_source.html">vdd_disconnect_data_...</a> </div> <div> <a href="fn_vdd_measure_rpc_time.html">vdd_measure_rpc_time</a> </div> </div> <div> <a href="functions.html#repl">Replication</a> </div> <div> <a href="functions.html#soap">SOAP</a> </div> <div> <a href="functions.html#sql">SQL</a> </div> <div> <a href="functions.html#string">String</a> </div> <div> <a href="functions.html#txn">Transaction</a> </div> <div> <a href="functions.html#type">Type Mapping</a> </div> <div> <a href="functions.html#uddi">UDDI</a> </div> <div> <a href="functions.html#udt">User Defined Types & The CLR</a> </div> <div> <a href="functions.html#vad">VAD</a> </div> <div> <a href="functions.html#jvmpl">Virtuoso Java PL API</a> </div> <div> <a href="functions.html#bif">Virtuoso Server Extension Interface (VSEI)</a> </div> <div> <a href="functions.html#ws">Web & Internet</a> </div> <div> <a href="functions.html#xml">XML</a> </div> <div> <a href="functions.html#XPATH">XPATH & XQUERY</a> </div> <br /> <div> <a href="functionidx.html">Functions Index</a> </div> <br /> </div> <div id="text"> <h2>vd_remote_proc_wrapper</h2> <div class="refpurpose">Creating a PL wrapper for remote procedure execution</div> <div class="funcsynopsis"> <span class="funcdef">varchar <span class="function">vd_remote_proc_wrapper</span> </span> (<span class="paramdef">in <span class="parameter">dsn</span> varchar</span>, <span class="paramdef">in <span class="parameter">remote_name</span> varchar</span>, <span class="paramdef">in <span class="parameter">local_name</span> varchar</span>, <span class="paramdef">in <span class="parameter">metadata</span> any</span>, <span class="paramdef">out <span class="parameter">status_code</span> varchar</span>, <span class="paramdef">out <span class="parameter">error_message</span> varchar</span>, <span class="paramdef">in <span class="parameter">make_resultset</span> integer</span>, <span class="paramdef">in <span class="parameter">description</span> varchar</span>); </div> <div class="refsect1"> <div class="refsect1title">Description</div> <p>This is to create a PL stored procedure to execute a Remote Stored Procedures. It returns results as a SQL result set as well as an array(vector) depending of the 'make_resultset' flag. </p> </div> <div class="refsect1"> <div class="refsect1title">Parameters</div> <div class="refsect2"> <span class="refsect2title">dsn – </span> the remote datasource name </div> <div class="refsect2"> <span class="refsect2title">remote_name – </span> name of the remote procedure </div> <div class="refsect2"> <span class="refsect2title">local_name – </span> name of the PL wrapper to be created locally </div> <div class="refsect2"> <span class="refsect2title">metadata – </span> A vector of vectors containing a parameters information each of vectors need to have following structure: <ul> <li>type of parameter - 'IN'/'OUT'/'INOUT' </li> <li>name of parameter - the name of parameter</li> <li>data type - SQL datatype of parameter as string (for example 'VARCHAR', 'INT' etc.)</li> <li>SOAP type - a XSD/custom datatype for SOAP/WSDL actions (if not needed, must be empty string ie. '')</li> </ul> </div> <div class="refsect2"> <span class="refsect2title">status_code – </span> returns SQL status code of the PL wrapper generation </div> <div class="refsect2"> <span class="refsect2title">error_message – </span> returns the error message if status code is different than 00000 </div> <div class="refsect2"> <span class="refsect2title">make_resultset – </span> A flag 0/1 default 0. If is true (1) the wrapper will be generated to return result set. Otherwise will be generated to return an array. </div> <div class="refsect2"> <span class="refsect2title">description – </span> The text of a comment to added to the wrapper. It then will be shown as a method description if the PL wrapper is published as a SOAP method. </div> </div> <div class="refsect1"> <div class="refsect1title">Examples</div> <a name="ex_vsp_calculate_digest" /> <div class="example"> <div class="exampletitle">Creating a PL wrapper which returns resultset</div> <p>The following example will create a PL wrapper to invoke the MS SqlServer Stored Procedure 'Northwind.dbo.CustOrderHist' </p> <div> <pre class="programlisting"> -- the wrapper creation (fragment of Virtuoso/PL) declare state, msg varchar; vd_remote_proc_wrapper ('Northwind.dbo.CustOrderHist', 'MS.SQL.CustOrderHist', 'sql_lite', vector (vector ('IN', '_CustomerID', 'VARCHAR', '')), state, msg , 1, 'This is a test'); if (state <> '00000') signal (state, msg); -- PL wrapper source that will be created create procedure "MS"."SQL"."CustOrderHist" (IN "_CustomerID" VARCHAR) returns any array array { --PL Wrapper for remote procedure --##This is a test --"DSN:sql_lite PROCEDURE:Northwind.dbo.CustOrderHist" declare dta, mdta any; declare params any; params := vector ("_CustomerID"); set_user_id ('dba'); rexecute ('sql_lite', '{call "Northwind"."dbo"."CustOrderHist" (?)}', NULL, NULL, params, 0, mdta, dta); exec_result_names(mdta[0]); declare i, l integer; i := 0; l := length (dta); while(i<l) { exec_result(dta[i]); i:=i+1; } } -- result from execution SQL> "MS"."SQL"."CustOrderHist" ('ALFKI'); ProductName Total VARCHAR NOT NULL INTEGER _______________________________________________________________________________ Aniseed Syrup 6 Chartreuse verte 21 Escargots de Bourgogne 40 Flotemysost 20 Grandma's Boysenberry Spread 16 Lakkalikri 15 Original Frankfurter grne Soe 2 Raclette Courdavault 15 Rssle Sauerkraut 17 Spegesild 2 Vegie-spread 20 11 Rows. -- 18 msec. </pre> </div> </div> </div> <div class="refsect1"> <div class="refsect1title">See Also</div> <p> <a href="fn_rexecute.html">rexecute</a> <a href="fn_vd_remote_data_source.html">vd_remote_data_source</a> </p> </div> </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>