﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-java.beggar</title><link>http://www.blogjava.net/zzhzzh204553/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 15:19:14 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 15:19:14 GMT</pubDate><ttl>60</ttl><item><title>ORA-12514: TNS: 监听进程不能解析在连接描述符中给出的服务名称</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/06/11/281479.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Thu, 11 Jun 2009 07:04:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/06/11/281479.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/281479.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/06/11/281479.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/281479.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/281479.html</trackback:ping><description><![CDATA[<p>打开Net Manager，选中服务名称，检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。</p> <p>&nbsp;</p> <p>方法二： 在TOAD登陆时使用全局名称：</p> <p>zhouzhenhua:1521/javafan</p><img src ="http://www.blogjava.net/zzhzzh204553/aggbug/281479.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-06-11 15:04 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/06/11/281479.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>个人评价，仅供参考！</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/05/07/269459.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Thu, 07 May 2009 09:40:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/05/07/269459.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/269459.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/05/07/269459.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/269459.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/269459.html</trackback:ping><description><![CDATA[<p>人品不错，挺让人放心的，不会像有的男的看起来很花花的，还有就是没有明显的缺点，这可是很重要的  <p>我现在看到的男的歪瓜裂枣的太多了</p><img src ="http://www.blogjava.net/zzhzzh204553/aggbug/269459.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-05-07 17:40 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/05/07/269459.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PL/SQL集合方法</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260404.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Wed, 18 Mar 2009 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260404.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/260404.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/260404.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/260404.html</trackback:ping><description><![CDATA[<blockquote> <p>PL/SQL集合方法是用于操纵集合变量的内置函数或过程。</p> <p>语法：</p> <p>collection_name.method_name[(parameter)]</p></blockquote> <p>注意：<strong>集合方法extend和trim不适用于PL/SQL表</strong>。</p> <p>1. exists</p> <p>2. count</p> <p>3. limit</p> <p>返回VARRAY变量所允许的最大元素个数。嵌套表和PL/SQL表的元素个数无限制，所以调用该方法时返回NULL。</p> <p>4. first和last</p> <p>第一个元素的下标，最后一个元素的下标</p> <p>ename_table(ename_table.first)</p> <p>ename_table(ename_table.last)</p> <p>5. prior和next</p> <p>前一个元素的下标，后一个元素的下标</p> <p>ename_table(ename_table.prior(1))</p> <p>ename_table(ename_table.next(1))</p> <p>6.extend</p> <p>该方法为PL/SQL集合变量增加元素，<strong>只适用于嵌套表和VARRAY</strong>。</p> <p>注意：当使用EXTEND增加元素时，不能为未初始化的集合变量增加元素。</p> <p>EXTEND方法有三种调用方法：</p> <ul> <li>EXTEND:添加一个null元素。</li> <li>EXTEND(n):添加n个null元素</li> <li>EXTEND(n,i):添加n个元素，元素值与第i个元素相同。</li></ul> <p>7. trim</p> <p>该方法用于从集合变量尾部删除元素，并且<strong>只适用于嵌套表和VARRAY</strong>。</p> <p>TRIM共有两种调用方法：</p> <ul> <li>TRIM:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从集合变量尾部删除一个元素。</li> <li>TRIM(n):&nbsp;&nbsp; 从集合变量尾部删除n个元素。</li></ul> <p>8. delete</p> <p>用于删除特定元素，<strong>只适用于嵌套表和PL/SQL表</strong>。</p> <p>DELETE有三种调用方法：</p> <ul> <li>DELETE:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 删除所有的元素</li> <li>DELETE(n):&nbsp;&nbsp;&nbsp; 删除第n个元素。</li> <li>DELETE(m,n):删除m~n之间所有的元素。</li></ul><img src ="http://www.blogjava.net/zzhzzh204553/aggbug/260404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-18 11:14 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260404.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PL/SQL集合</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260398.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Wed, 18 Mar 2009 02:50:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260398.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/260398.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260398.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/260398.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/260398.html</trackback:ping><description><![CDATA[<p>第<strong>一，PL/SQL表</strong> <p>它只能作为PL/SQL类型，<strong>不能</strong>作为表列类型。 <p>下标可以为负值，并且元素个数无限制。 <p>下标类型key_type: 包括BINARY_INTEGER、PLS_INTEGER、VARCHAR2。 <p>语法： <p>TYPE&nbsp; type_name&nbsp; IS&nbsp; TABLE&nbsp; OF&nbsp; element_type <p>[NOT&nbsp; NULL]&nbsp; INDEX&nbsp; BY key_type; <p>identifier type_name; <p>&nbsp; <p>例如： <p>DECLARE<br>&nbsp;&nbsp; TYPE category_table_type IS TABLE OF VARCHAR2 (40)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX BY VARCHAR2 (40);  <p>&nbsp;&nbsp; category_table&nbsp;&nbsp; category_table_type;<br>BEGIN<br>&nbsp;&nbsp; category_table ('长沙') := '长沙，我爱你！';<br>&nbsp;&nbsp; DBMS_OUTPUT.put_line (category_table ('长沙'));<br>END; <p>&nbsp; <p><strong>第二，嵌套表</strong> <p>可以作为表列的数据类型使用。 <p>当使用嵌套表元素时，需要使用构造方法初始化嵌套表变量。 <p>下标从1开始计算。 <p><strong></strong>&nbsp; <p>语法： <p>TYPE type_name IS TABLE OF element_type; <p>identifier&nbsp; type_name; <p>&nbsp; <p>例子： <p>DECLARE<br>&nbsp;&nbsp; TYPE category_table_type IS TABLE OF tb_out_service.servicename%TYPE;  <p>&nbsp;&nbsp; category_table&nbsp;&nbsp; category_table_type;<br>BEGIN<br>&nbsp;&nbsp; category_table := category_table_type ('全省', '长沙', '常德');  <p>&nbsp;&nbsp; SELECT servicename<br>&nbsp;&nbsp;&nbsp;&nbsp; INTO category_table (3)<br>&nbsp;&nbsp;&nbsp;&nbsp; FROM tb_out_service<br>&nbsp;&nbsp;&nbsp; WHERE serviceid = '&amp;serviceid';  <p>&nbsp;&nbsp; DBMS_OUTPUT.put_line (category_table (1));<br>&nbsp;&nbsp; DBMS_OUTPUT.put_line (category_table (2));<br>&nbsp;&nbsp; DBMS_OUTPUT.put_line (category_table (3));<br>END; <p>&nbsp; <p><strong>第三，变长数组(VARRAY)</strong> <p>需要使用构造方法初始化VARRAY变量。 <p>语法： <p>TYPE type_name is VARRAY(size_limit) OF element_type [NOT NULL]; <p>identifier type_name; <img src ="http://www.blogjava.net/zzhzzh204553/aggbug/260398.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-18 10:50 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PL/SQL记录</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260384.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Wed, 18 Mar 2009 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260384.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/260384.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260384.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/260384.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/260384.html</trackback:ping><description><![CDATA[<p>第一，定义PL/SQL记录</p> <blockquote> <p>1. 自定义PL/SQL记录</p> <p>2. 使用%ROWTYPE属性定义记录变量</p> <p>举例：</p> <p>-----------------------------------------------</p> <p>DECLARE<br>--自定义记录类型<br>&nbsp;&nbsp; TYPE emp_record_type IS RECORD (<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serviceid&nbsp;&nbsp;&nbsp; tb_out_service%TYPE,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sericename&nbsp;&nbsp; tb_out_service%TYPE<br>&nbsp;&nbsp; );  <p>&nbsp;&nbsp; emp_record&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; emp_record_type;</p> <p><br>&nbsp;&nbsp; --使用%ROWTYPE属性定义记录变量<br>&nbsp;&nbsp; category_record&nbsp;&nbsp; tb_out_service%ROWTYPE;<br>BEGIN<br>&nbsp;&nbsp; NULL;<br>END;</p></blockquote> <p>第二，使用PL/SQL记录</p> <blockquote></blockquote> <p>DECLARE<br>&nbsp;&nbsp; --使用%ROWTYPE属性定义记录变量<br>&nbsp;&nbsp; category_r&nbsp;&nbsp; tb_out_service%ROWTYPE; <p>BEGIN</p> <p>&nbsp;&nbsp;&nbsp; ...</p> <p>UPDATE tb_out_service<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET <strong><font color="#ff0000">ROW</font></strong> = category_r&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --注意ROW关键字<br>&nbsp;&nbsp;&nbsp; WHERE serviceid = category_r.serviceid;</p> <p>&nbsp;&nbsp;&nbsp; ...</p> <p>INSERT INTO tb_out_service<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong><font color="#ff0000">VALUES</font></strong> category_r;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --在values子句中使用记录成员播入数据。 <p>&nbsp;&nbsp;&nbsp; ... <p>END; <img src ="http://www.blogjava.net/zzhzzh204553/aggbug/260384.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-18 09:45 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/18/260384.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用事务控制语句</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260199.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Tue, 17 Mar 2009 03:08:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260199.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/260199.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/260199.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/260199.html</trackback:ping><description><![CDATA[<blockquote> <p>commit</p> <p>rollback</p> <p>savepoint&nbsp;&nbsp; a1</p></blockquote><img src ="http://www.blogjava.net/zzhzzh204553/aggbug/260199.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-17 11:08 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260199.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL游标</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260198.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Tue, 17 Mar 2009 03:07:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260198.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/260198.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/260198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/260198.html</trackback:ping><description><![CDATA[<blockquote> <p>隐含游标：专门处理SELECT INTO、INSERT、UPDATE以及DELETE语句。</p> <p>显示游标：用于处理多行的SELECT语句。</p></blockquote> <p>当在PL/SQL块中执行INSERT、UPDATE及DELETE语句时，为了取得DML语句作用的结果，需要使用SQL游标属性。</p> <p><strong>第一，游标的4种属性</strong></p> <blockquote> <p>1. SQL%ISOPEN</p></blockquote> <p>该属性永远都是false，没有实际意义。</p> <blockquote> <p>2. SQL%FOUND</p></blockquote> <p>语句是否操作成功。当SQL语句有作用行时为TRUE.</p> <blockquote> <p>3. SQL%NOTFOUND</p></blockquote> <p>LOOP</p> <blockquote> <p>FETCH&nbsp; emp_cursor&nbsp; INTO&nbsp;&nbsp; v_name, v_deptno;</p> <p>EXIT&nbsp; WHEN&nbsp; emp_cursor%NOTFOUND;</p></blockquote> <blockquote> <p>...</p></blockquote> <p>END LOOP;</p> <p>&nbsp;</p> <blockquote> <p>4. SQL%ROWCOUNT</p></blockquote> <p>返回SQL语句所作用的总计行数。</p> <p>该属性用于返回已提取的实际行数。</p> <p>&nbsp;</p> <p><strong>第二，显示游标专用于处理SELECT语句返回的多行数据。</strong></p> <ul> <li>定义游标：</li></ul> <blockquote> <p>CURSOR&nbsp; cursor_name&nbsp; IS&nbsp; select_statement;</p></blockquote> <ul> <li>打开游标：</li></ul> <blockquote> <p>open&nbsp; cursor_name;</p></blockquote> <ul> <li>提到数据：</li></ul> <blockquote> <p>FETCH&nbsp; cursor_name&nbsp; INTO&nbsp; var1[, var2, ...];</p></blockquote> <ul> <li>关闭游标：</li></ul> <blockquote> <p>CLOSE&nbsp; cursor_name;</p></blockquote> <p>例子：</p> <p>DECLARE<br>&nbsp;&nbsp; CURSOR category_cursor<br>&nbsp;&nbsp; IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM tb_out_service t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t.servicename LIKE '长沙%';  <p>&nbsp;&nbsp; TYPE category_table_type IS TABLE OF tb_out_service%ROWTYPE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INDEX BY BINARY_INTEGER;  <p>&nbsp;&nbsp; category_table&nbsp;&nbsp; category_table_type;<br>&nbsp;&nbsp; i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INT;<br>BEGIN<br>&nbsp;&nbsp; OPEN category_cursor;  <p>&nbsp;&nbsp; LOOP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i := category_cursor%ROWCOUNT + 1;  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FETCH category_cursor<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO category_table (i);  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXIT WHEN category_cursor%NOTFOUND;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.put_line (&nbsp;&nbsp; RPAD (category_table (i).serviceid, 30)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || '&nbsp; '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || category_table (i).servicename<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>&nbsp;&nbsp; END LOOP;  <p>&nbsp;&nbsp; CLOSE category_cursor;<br>END;  <p>&nbsp;</p> <p><strong>第三，游标FOR循环</strong></p> <p>语法：</p> <p>FOR&nbsp; record_name&nbsp; IN&nbsp; cursor_name&nbsp; LOOP</p> <blockquote> <p>statement;</p> <p>...</p></blockquote> <p>END&nbsp; LOOP;</p> <p>注意：当使用游标FOR循环时，既可以在定义部分定义游标，也可以直接在FOR循环中使用SELECT语句。</p> <p>&nbsp;</p> <p><strong>第四，参数游标</strong></p> <p>CURSOR cursor_name(parameter_name datatype) is select_statement;</p> <p>OPEN cursor_name(parameter_value)</p> <p>注意：</p> <p>定义参数只能指定数据类型，不能指定长度。</p> <p>另外，应该在游标的select语句的where子句中引用游标参数，否则失去了定义参数游标的意义。</p> <p>---------------------------------------------------------------------------------------------------------------------</p> <p>DECLARE<br>&nbsp;&nbsp; CURSOR category_cursor (NAME VARCHAR2)<br>&nbsp;&nbsp; IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM tb_out_service t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t.servicename LIKE NAME || '%';<br>BEGIN<br>&nbsp;&nbsp; FOR category_record IN category_cursor ('吉首')<br>&nbsp;&nbsp; LOOP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.put_line (&nbsp;&nbsp; RPAD (category_record.serviceid, 30)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || '&nbsp; '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || category_record.servicename<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>&nbsp;&nbsp; END LOOP;<br>END;  <p>&nbsp;</p> <p><strong>第五，更新或删除游标行</strong></p> <p><strong>语法</strong>：</p> <p>CURSOR cursor_name IS select_statement</p> <blockquote> <p>FOR UPDATE [OF column_reference]&nbsp; [NOWAIT];</p></blockquote> <p>UPDATE table_name SET column=..&nbsp; WHERE CURRENT OF cursor_name;</p> <p>DELETE FROM table_name WHERE CURRENT OF cursor_name;</p> <p>&nbsp;</p> <p><strong>注意</strong>：</p> <blockquote> <p>1. OF子句的格式：column_reference为table_name.column_name</p> <p>2. WHERE CURRENT OF cursor_name, 更新或者删除游标所在行的数据。</p></blockquote> <blockquote> <p>3. 在使用游标更新或删除数据时，定义游标必须带有FOR&nbsp; UPDATE子句，并且在更新或者删除游标时必须带有WHERE CURRENT OF 子句。</p></blockquote> <p>当查询语句涉及到多张表时，如果不带有OF子句，会在多张表上同时加锁，如果只在特定的表上加锁，需要带有OF子句。</p> <p>&nbsp;</p> <p>DECLARE<br>&nbsp;&nbsp; CURSOR category_cursor (NAME VARCHAR2)<br>&nbsp;&nbsp; IS<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM tb_out_service t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t.servicename LIKE NAME || '%'<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FOR UPDATE OF t.querystr;  <p>&nbsp;&nbsp; v_name&nbsp;&nbsp; CONSTANT VARCHAR2 (20) := '长沙';<br>BEGIN<br>&nbsp;&nbsp; FOR category_record IN category_cursor (v_name)<br>&nbsp;&nbsp; LOOP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IF INSTR (category_record.servicename, v_name || '——') &lt;&gt; 1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.put_line (&nbsp;&nbsp; 'delete: '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || RPAD (category_record.serviceid, 30)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || '&nbsp; '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || category_record.servicename<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DELETE FROM tb_out_service<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE CURRENT OF category_cursor;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.put_line (&nbsp;&nbsp; 'upate: '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || RPAD (category_record.serviceid, 30)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || '&nbsp; '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || category_record.servicename<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE tb_out_service t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET t.querystr = v_name || '——' || t.servicename<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE CURRENT OF category_cursor;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; END IF;<br>&nbsp;&nbsp; END LOOP;<br>END; <p>&nbsp;</p> <p>第六， <strong>游标变量</strong></p> <blockquote> <p>游标变量是基于REF CURSOR类型所定义的变量，它实际上是指向内存地址的指针。显式游标只能定义静态游标，而游标变量可以在打开时指定其所对应的SELECT语句，从而实现动态游标。</p></blockquote> <ul> <li>定义游标：</li></ul> <blockquote> <p>TYPE&nbsp; ref_type_name&nbsp; IS&nbsp; REF&nbsp; CURSOR&nbsp; [RETURN&nbsp; return_type];</p> <p>cursor_variable&nbsp; ref_type_name;</p></blockquote> <ul> <li>打开游标：</li></ul> <blockquote> <p>OPEN&nbsp; cursor_name&nbsp; FOR&nbsp; select_statement;</p></blockquote> <ul> <li>提到数据：</li></ul> <blockquote> <p>FETCH&nbsp; cursor_variable&nbsp; INTO&nbsp; var1[, var2, ...];</p></blockquote> <ul> <li>关闭游标：</li></ul> <blockquote> <p>CLOSE&nbsp; cursor_variable;</p></blockquote> <p>注意：</p> <blockquote> <p>不能在远程子程序中使用游标变量。</p> <p>当指定子查询时，不能带有FOR UPDATE子句。</p> <p>当指定RETURN子句时，返回类型必须使用PL/SQL记录类型。</p></blockquote> <p>例子：</p> <p>DECLARE<br>&nbsp;&nbsp; TYPE category_cursor_type IS REF CURSOR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RETURN tb_out_service%ROWTYPE;  <p>&nbsp;&nbsp; category_cursor&nbsp;&nbsp; category_cursor_type;<br>&nbsp;&nbsp; category_record&nbsp;&nbsp; tb_out_service%ROWTYPE;<br>&nbsp;&nbsp; v_name&nbsp;&nbsp; CONSTANT VARCHAR2 (40)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; := '长沙';<br>BEGIN<br>&nbsp;&nbsp; OPEN category_cursor FOR<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FROM tb_out_service t<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE t.servicename LIKE v_name || '%';  <p>&nbsp;&nbsp; LOOP<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FETCH category_cursor<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INTO category_record;  <p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EXIT WHEN category_cursor%NOTFOUND;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DBMS_OUTPUT.put_line (&nbsp;&nbsp; RPAD (category_record.serviceid, 30)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || '&nbsp; '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || category_record.servicename<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );<br>&nbsp;&nbsp; END LOOP;<br>END; <img src ="http://www.blogjava.net/zzhzzh204553/aggbug/260198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-17 11:07 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/17/260198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在PL/SQL块中可以使用的SQL函数</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/16/259957.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Mon, 16 Mar 2009 02:51:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/16/259957.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/259957.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/16/259957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/259957.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/259957.html</trackback:ping><description><![CDATA[<blockquote> <p>编写PL/SQL时，可以直接使用大多数的单行SQL函数，这些单行函数包括数字函数、字符函数、转换函数及日期函数。</p> <p>注意：某些SQL函数只能在SQL语句中引用，而不能直接在PL/SQL语句中引用，这些SQL函数包括GREATEST、LEAST、DECODE及所有的分组函数（如SUM）。</p></blockquote><img src ="http://www.blogjava.net/zzhzzh204553/aggbug/259957.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-16 10:51 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/16/259957.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle数据库约束</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259340.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Thu, 12 Mar 2009 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259340.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/259340.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259340.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/259340.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/259340.html</trackback:ping><description><![CDATA[<blockquote> <p>约束用于确保数据库数满足业务规则。</p></blockquote> <blockquote> <p>约束包括：NOT NULL，UNIQUE，PRIMARY KEY，FOREIGN KEY以及CHECK等5种类型。</p></blockquote> <blockquote> <p>建立主键约束和唯一约束时，Oralce会基于约束列自动建立唯一索引；主键约束不允许为NULL，唯一约束允许为NULL。</p> <p>一张表只能建立一个主键约束。</p> <p>建表约束：NOT NULL只能在列级定义；其它4种既可以在列级定义，也可以在表级定义。复合主键约束只能在表级定义。</p> <p>维护约束：增加NOT NULL约束时必须使用MODIFY子句，而增加其它约束时需要使用ADD子句。</p> <p>&nbsp;</p></blockquote> <p>第一， 定义约束</p> <p>---------------------------------------------</p> <p><strong>语法</strong>：</p> <p>CREATE&nbsp; TABLE&nbsp; [SCHEMA.]table_name(</p> <blockquote> <p>column_name&nbsp; datatype&nbsp; [DEFAULT&nbsp; expr]&nbsp; [column_constraint],</p> <p>...</p> <p>[table_constraint][, ...]</p></blockquote> <p>);</p> <p>&nbsp;</p> <p><strong>例子</strong>：</p> <p>CREATE TABLE tt_user_info<br>(<br>&nbsp; ID&nbsp;&nbsp;&nbsp; VARCHAR2(20 BYTE),<br>&nbsp; NAME&nbsp; VARCHAR2(20 BYTE)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOT NULL,<br>&nbsp; category_id VARCHAR2(20 BYTE)&nbsp; REFERENCES tb_out_service(serviceid),<br>&nbsp; remark&nbsp;&nbsp; VARCHAR2(1000)<br>);  <p>ALTER TABLE tt_user_info ADD (<br>&nbsp; CHECK ( LENGTH(NAME)&gt;2),<br>&nbsp; PRIMARY KEY (ID),<br>&nbsp; UNIQUE (NAME)<br>&nbsp; );  <p>&nbsp; <p><strong>说明</strong>：  <p><strong>1. NOT NULL，非空约束</strong></p> <p>not null</p> <p><strong>2. UNIQUE，唯一约束</strong></p> <p>UNIQUE (COL_NAME)</p> <p><strong>3. PRIMARY KEY，主键约束</strong></p> <p>primary key (col_name1 [, col_name2])</p> <p><strong>4. FOREIGN KEY，外键约束</strong></p> <p>它有三种类型：</p> <p>references&nbsp; primary_table(primary_col)</p> <p>on delete cascade</p> <p>on delete set null</p> <p><strong>5. CHECK，检查约束</strong></p> <p>check (money &gt; 1000)</p> <p>&nbsp;</p> <p>第二， 维护约束</p> <p>----------------------------------------</p> <p>1. 增加约束</p> <p>NOT NULL使用ALTER MODIFY子句，其它的使用ALTER&nbsp; ADD子句</p> <p>-------------------------------</p> <p>CREATE TABLE tt_user(NAME VARCHAR2(20)); </p> <p>ALTER TABLE tt_user <u>MODIFY</u> user_name NOT NULL;<br>ALTER TABLE tt_user <u>ADD</u> CONSTRAINT constraint_name UNIQUE(NAME);<br>ALTER TABLE tt_user ADD CONSTRAINT constraint_name PRIMARY KEY(NAME);<br>ALTER TABLE tt_user ADD parentid VARCHAR2(20) <br>&nbsp;&nbsp;&nbsp; CONSTRAINT constraint_name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REFERENCES tb_out_service(serviceid);</p> <p>&nbsp;</p> <p>2. 修改约束名</p> <p>ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name TO new_constraint_name</p> <p>&nbsp;</p> <p>3. 删除约束</p> <p>ALTER TABLE table_name DROP CONSTRAINT constraint_name</p> <p>&nbsp;</p> <p>4. 禁止约束</p> <p>ALTER TABLE table_name DISABLE CONSTRAINT constraint_name&nbsp; [CASCADE];</p> <p>&nbsp;</p> <p>5.激动约束</p> <p>ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;</p> <p>&nbsp;</p> <p>第三. 显示约束信息</p> <p>所有约束信息</p> <p>SELECT *<br>&nbsp; FROM user_constraints  <p>&nbsp; <p>用户约束所对应的表列  <p>SELECT *<br>&nbsp; FROM user_cons_columns;  <img src ="http://www.blogjava.net/zzhzzh204553/aggbug/259340.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-12 15:03 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259340.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle建立临时表</title><link>http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259300.html</link><dc:creator>JavaBegger</dc:creator><author>JavaBegger</author><pubDate>Thu, 12 Mar 2009 03:43:00 GMT</pubDate><guid>http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259300.html</guid><wfw:comment>http://www.blogjava.net/zzhzzh204553/comments/259300.html</wfw:comment><comments>http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/zzhzzh204553/comments/commentRss/259300.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/zzhzzh204553/services/trackbacks/259300.html</trackback:ping><description><![CDATA[<p>临时表分为两种，它们只在事务或者会话内有效。</p> <p>------------------------------------</p> <p>A. 事务临时表(缺省)：</p> <p>CREATE GLOBAL TEMPORARY TABLE table_name(col_name INT);</p> <p>CREATE GLOBAL TEMPORARY TABLE table_name(col_name INT) ON COMMIT DELETE ROWS;</p> <p>------------------------------------</p> <p>B. 会话临时表：</p> <p>CREATE GLOBAL TEMPORARY TABLE table_name(col_name INT) ON COMMIT PRESERVE ROWS;</p><img src ="http://www.blogjava.net/zzhzzh204553/aggbug/259300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/zzhzzh204553/" target="_blank">JavaBegger</a> 2009-03-12 11:43 <a href="http://www.blogjava.net/zzhzzh204553/archive/2009/03/12/259300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>