ibm-information-center/dist/eclipse/plugins/i5OS.ic.sqlp_5.4.0.1/rbafysqlpfenced.htm

68 lines
4.1 KiB
HTML
Raw Permalink Normal View History

2024-04-02 14:02:31 +00:00
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="security" content="public" />
<meta name="Robots" content="index,follow" />
<meta http-equiv="PICS-Label" content='(PICS-1.1 "http://www.icra.org/ratingsv02.html" l gen true r (cz 1 lz 1 nz 1 oz 1 vz 1) "http://www.rsac.org/ratingsv01.html" l gen true r (n 0 s 0 v 0 l 0) "http://www.classify.org/safesurf/" l gen true r (SS~~000 1))' />
<meta name="DC.Type" content="reference" />
<meta name="DC.Title" content="Fenced or unfenced considerations" />
<meta name="abstract" content="When creating a user-defined function (UDF) consider whether to make the UDF an unfenced UDF." />
<meta name="description" content="When creating a user-defined function (UDF) consider whether to make the UDF an unfenced UDF." />
<meta name="DC.subject" content="UDFs (User-defined functions), fenced versus unfenced" />
<meta name="keywords" content="UDFs (User-defined functions), fenced versus unfenced" />
<meta name="DC.Relation" scheme="URI" content="rbafywudfextern.htm" />
<meta name="DC.Relation" scheme="URI" content="rbafyudfthreads.htm" />
<meta name="copyright" content="(C) Copyright IBM Corporation 1998, 2006" />
<meta name="DC.Rights.Owner" content="(C) Copyright IBM Corporation 1998, 2006" />
<meta name="DC.Format" content="XHTML" />
<meta name="DC.Identifier" content="rbafysqlpfenced" />
<meta name="DC.Language" content="en-us" />
<!-- All rights reserved. Licensed Materials Property of IBM -->
<!-- US Government Users Restricted Rights -->
<!-- Use, duplication or disclosure restricted by -->
<!-- GSA ADP Schedule Contract with IBM Corp. -->
<link rel="stylesheet" type="text/css" href="./ibmdita.css" />
<link rel="stylesheet" type="text/css" href="./ic.css" />
<title>Fenced or unfenced considerations</title>
</head>
<body id="rbafysqlpfenced"><a name="rbafysqlpfenced"><!-- --></a>
<!-- Java sync-link --><script language="Javascript" src="../rzahg/synch.js" type="text/javascript"></script>
<h1 class="topictitle1">Fenced or unfenced considerations</h1>
<div><p>When creating a user-defined function (UDF) consider whether to
make the UDF an unfenced UDF.</p>
<div class="section"><p>By default, UDFs are created as fenced UDFs. Fenced indicates
that the database should run the UDF in a separate thread. For complex UDFs,
this separation is meaningful as it will avoid potential problems such as
generating unique SQL cursor names. Not having to be concerned about resource
conflicts is one reason to stick with the default and create the UDF as a
fenced UDF. A UDF created with the NOT FENCED option indicates to the database
that the user is requesting that the UDF can run within the same thread that
initiated the UDF. Unfenced is a suggestion to the database, which can still
decide to run the UDF in the same manner as a fenced UDF.</p>
<pre><strong>CREATE FUNCTION</strong> QGPL.FENCED (parameter1 <strong>INTEGER</strong>)
<strong>RETURNS INTEGER LANGUAGE SQL</strong>
<strong>BEGIN
RETURN</strong> parameter1 * 3;
<strong>END</strong>;
<strong>CREATE FUNCTION</strong> QGPL.UNFENCED1 (parameter1 <strong>INTEGER</strong>)
<strong>RETURNS INTEGER LANGUAGE SQL NOT FENCED</strong>
-- Build the UDF to request faster execution via the NOT FENCED option
<strong>BEGIN</strong>
<strong>RETURN</strong> parameter1 * 3;
<strong>END</strong>;</pre>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="rbafywudfextern.htm" title="You can write the executable code of a UDF in a language other than SQL.">Write UDFs as external functions</a></div>
</div>
<div class="relref"><strong>Related reference</strong><br />
<div><a href="rbafyudfthreads.htm" title="A UDF, defined as FENCED, runs in the same job as the SQL statement that called it. However, the UDF runs in a system thread, separate from the thread that is running the SQL statement.">Threads considerations</a></div>
</div>
</div>
</body>
</html>