<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Oracle object types: using constructors</title>
	<atom:link href="http://technology.amis.nl/2011/01/12/oracle-object-types-using-constructors/feed/" rel="self" type="application/rss+xml" />
	<link>http://technology.amis.nl/2011/01/12/oracle-object-types-using-constructors/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=oracle-object-types-using-constructors</link>
	<description></description>
	<lastBuildDate>Fri, 12 Apr 2013 10:04:09 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
	<item>
		<title>By: Henk Jan van Wijk</title>
		<link>http://technology.amis.nl/2011/01/12/oracle-object-types-using-constructors/#comment-6475</link>
		<dc:creator>Henk Jan van Wijk</dc:creator>
		<pubDate>Wed, 12 Jan 2011 12:09:21 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=10124#comment-6475</guid>
		<description><![CDATA[This is true, but there is a difference when you convert it to XML using select &lt;strong&gt;sys_xmlgen(hrm_employee_obj(),XMLFormat(&#039;EMP&#039;)).GetStringVal() from dual;
&lt;/strong&gt;
With:
CREATE OR REPLACE TYPE BODY hrm_employee_obj
IS
 CONSTRUCTOR FUNCTION hrm_employee_obj
 RETURN SELF AS RESULT
 IS
 BEGIN
 RETURN;
 END;
END;

The query results in:

&lt;?xml version=&quot;1.0&quot;?&gt; &lt;EMP/&gt;

With:
CREATE OR REPLACE TYPE BODY hrm_employee_obj
IS
 CONSTRUCTOR FUNCTION hrm_employee_obj
 RETURN SELF AS RESULT
 IS
 BEGIN
 department := hrm_department_obj();
 RETURN;
 END;
END;

The query results in:

&lt;?xml version=&quot;1.0&quot;?&gt; &lt;EMP&gt; &lt;DEPARTMENT/&gt; &lt;/EMP&gt;]]></description>
		<content:encoded><![CDATA[<p>This is true, but there is a difference when you convert it to XML using select <strong>sys_xmlgen(hrm_employee_obj(),XMLFormat(&#8216;EMP&#8217;)).GetStringVal() from dual;<br />
</strong><br />
With:<br />
CREATE OR REPLACE TYPE BODY hrm_employee_obj<br />
IS<br />
 CONSTRUCTOR FUNCTION hrm_employee_obj<br />
 RETURN SELF AS RESULT<br />
 IS<br />
 BEGIN<br />
 RETURN;<br />
 END;<br />
END;</p>
<p>The query results in:</p>
<p>&lt;?xml version=&#8221;1.0&#8243;?&gt; &lt;EMP/&gt;</p>
<p>With:<br />
CREATE OR REPLACE TYPE BODY hrm_employee_obj<br />
IS<br />
 CONSTRUCTOR FUNCTION hrm_employee_obj<br />
 RETURN SELF AS RESULT<br />
 IS<br />
 BEGIN<br />
 department := hrm_department_obj();<br />
 RETURN;<br />
 END;<br />
END;</p>
<p>The query results in:</p>
<p>&lt;?xml version=&#8221;1.0&#8243;?&gt; &lt;EMP&gt; &lt;DEPARTMENT/&gt; &lt;/EMP&gt;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anton Scheffer</title>
		<link>http://technology.amis.nl/2011/01/12/oracle-object-types-using-constructors/#comment-6474</link>
		<dc:creator>Anton Scheffer</dc:creator>
		<pubDate>Wed, 12 Jan 2011 10:57:55 +0000</pubDate>
		<guid isPermaLink="false">http://technology.amis.nl/blog/?p=10124#comment-6474</guid>
		<description><![CDATA[Nice post, but evenÂ an object type attribute doesn&#039;t have to be initialized:

SQL&gt;set serveroutput on
SQL&gt;create or replace type obj1 as object
Â  2Â  ( name varchar2(100) );
Â  3Â  /
Type created.
SQL&gt;create or replace type obj2 as object
Â  2Â  ( name varchar2(100)
Â  3Â  , o1 obj1
Â  4Â  , constructor function obj2 return self as resultÂ 
Â  5Â  );
Â  6Â  /
Type created.
SQL&gt;create or replace type body obj2
Â  2Â  as
Â  3Â Â Â  constructor function obj2 return self as result
Â  4Â Â Â  is
Â  5Â Â Â  begin
Â  6Â Â Â Â Â  return;
Â  7Â Â Â  end;
Â  8Â  end;Â 
Â  9Â  /
Type body created.
SQL&gt;declare
Â  2Â Â  o2 obj2;
Â  3Â Â  o3 obj2;
Â  4Â  begin
Â  5Â Â Â  o2 := obj2();
Â  6Â Â Â  o2.name := &#039;Hello&#039;;
Â  7Â Â Â  o2.o1 := obj1( &#039;World&#039; );
Â  8Â Â Â  dbms_output.put_line( o2.name &#124;&#124; &#039; &#039; &#124;&#124; o2.o1.name );
Â  9Â Â Â  o3 := obj2( &#039;Hallo&#039;, obj1( &#039;Wereld&#039; ) );
Â 10Â Â Â  dbms_output.put_line( o3.name &#124;&#124; &#039; &#039; &#124;&#124; o3.o1.name );
Â 11Â  end;
Â 12Â  /
Hello World
Hallo Wereld
PL/SQL procedure successfully completed.
SQL&gt;]]></description>
		<content:encoded><![CDATA[<p>Nice post, but evenÂ an object type attribute doesn&#8217;t have to be initialized:</p>
<p>SQL&gt;set serveroutput on<br />
SQL&gt;create or replace type obj1 as object<br />
Â  2Â  ( name varchar2(100) );<br />
Â  3Â  /<br />
Type created.<br />
SQL&gt;create or replace type obj2 as object<br />
Â  2Â  ( name varchar2(100)<br />
Â  3Â  , o1 obj1<br />
Â  4Â  , constructor function obj2 return self as resultÂ <br />
Â  5Â  );<br />
Â  6Â  /<br />
Type created.<br />
SQL&gt;create or replace type body obj2<br />
Â  2Â  as<br />
Â  3Â Â Â  constructor function obj2 return self as result<br />
Â  4Â Â Â  is<br />
Â  5Â Â Â  begin<br />
Â  6Â Â Â Â Â  return;<br />
Â  7Â Â Â  end;<br />
Â  8Â  end;Â <br />
Â  9Â  /<br />
Type body created.<br />
SQL&gt;declare<br />
Â  2Â Â  o2 obj2;<br />
Â  3Â Â  o3 obj2;<br />
Â  4Â  begin<br />
Â  5Â Â Â  o2 := obj2();<br />
Â  6Â Â Â  o2.name := &#8216;Hello&#8217;;<br />
Â  7Â Â Â  o2.o1 := obj1( &#8216;World&#8217; );<br />
Â  8Â Â Â  dbms_output.put_line( o2.name || &#8216; &#8216; || o2.o1.name );<br />
Â  9Â Â Â  o3 := obj2( &#8216;Hallo&#8217;, obj1( &#8216;Wereld&#8217; ) );<br />
Â 10Â Â Â  dbms_output.put_line( o3.name || &#8216; &#8216; || o3.o1.name );<br />
Â 11Â  end;<br />
Â 12Â  /<br />
Hello World<br />
Hallo Wereld<br />
PL/SQL procedure successfully completed.<br />
SQL&gt;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
