﻿<?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-流浪天涯-文章分类-Stored Proceduce</title><link>http://www.blogjava.net/hobby8062/category/22101.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 29 Apr 2007 07:34:22 GMT</lastBuildDate><pubDate>Sun, 29 Apr 2007 07:34:22 GMT</pubDate><ttl>60</ttl><item><title>DB2编程基础一</title><link>http://www.blogjava.net/hobby8062/articles/114578.html</link><dc:creator>刘浪</dc:creator><author>刘浪</author><pubDate>Sun, 29 Apr 2007 07:17:00 GMT</pubDate><guid>http://www.blogjava.net/hobby8062/articles/114578.html</guid><wfw:comment>http://www.blogjava.net/hobby8062/comments/114578.html</wfw:comment><comments>http://www.blogjava.net/hobby8062/articles/114578.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hobby8062/comments/commentRss/114578.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hobby8062/services/trackbacks/114578.html</trackback:ping><description><![CDATA[<p><span>1、从数据表中取指定前几条记录 <br></span><span lang=EN-US>select&nbsp;&nbsp;*&nbsp;&nbsp;from&nbsp;tb_market_code&nbsp;fetch&nbsp;first&nbsp;1&nbsp;rows&nbsp;only <br><br></span><span>但下面这种方式不允许</span><span lang=EN-US> <br>select&nbsp;market_code&nbsp;into&nbsp;v_market_code&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;from&nbsp;tb_market_code&nbsp;fetch&nbsp;first&nbsp;1&nbsp;rows&nbsp;only;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br></span><span>选第一条记录的字段到一个变量以以下方式代替</span><span> <br>&nbsp;&nbsp;&nbsp;&nbsp;declare&nbsp;v_market_code&nbsp;char(1); <br>&nbsp;&nbsp;&nbsp;&nbsp;declare&nbsp;cursor1&nbsp;cursor&nbsp;for&nbsp;select&nbsp;market_code&nbsp;from&nbsp;tb_market_code&nbsp; <br>fetch&nbsp;first&nbsp;1&nbsp;rows&nbsp;only&nbsp;for&nbsp;update; <br>&nbsp;&nbsp;&nbsp;&nbsp;open&nbsp;cursor1; <br>&nbsp;&nbsp;&nbsp;&nbsp;fetch&nbsp;cursor1&nbsp;into&nbsp;v_market_code; <br>&nbsp;&nbsp;&nbsp;&nbsp;close&nbsp;cursor1; <br><br>2、while、if和when地用法 <br></span><span lang=EN-US>while&nbsp;v_notfound=0&nbsp;Do <br>set&nbsp;v_notfound=1; <br>fetch&nbsp;cursor1&nbsp;into&nbsp;v_market_code; <br>end&nbsp;while; <br><br><span lang=EN-US>if(或when) v_notfound=0&nbsp;then<br>set&nbsp;v_notfound=1; <br>fetch&nbsp;cursor1&nbsp;into&nbsp;v_market_code; <br>end&nbsp;if; </span></span><span><br><br>3、类似charindex查找字符在字串中的位置 <br></span><span lang=EN-US>Locate(&#8216;y&#8217;,&#8217;dfdasfay&#8217;) <br></span><span>查找</span><span lang=EN-US>&#8217;y&#8217;&nbsp;</span><span>在</span><span lang=EN-US>&#8217;dfdasfay&#8217;</span><span>中的位置。</span><span>&nbsp;<br><br>4、 类似datedif计算两个日期的相差天数<u> <br></u></span><span lang=EN-US>days(date(&#8216;<st1:chsdate Year="2001" Month="6" Day="5" IsLunarDate="False" IsROCDate="False" w:st="on">2001-06-05</st1:chsdate>&#8217;))&nbsp;&#8211;&nbsp;days(date(&#8216;<st1:chsdate Year="2001" Month="4" Day="1" IsLunarDate="False" IsROCDate="False" w:st="on">2001-04-01</st1:chsdate>&#8217;)) <br>days&nbsp;</span><span>返回的是从</span><span lang=EN-US>&nbsp;&nbsp;<st1:chsdate Year="2001" Month="1" Day="1" IsLunarDate="False" IsROCDate="False" w:st="on">0001-01-01</st1:chsdate>&nbsp;</span><span>开始计算的天数</span><span>&nbsp;<br><br>5、 预防字段空值的处理 <br></span><span lang=EN-US>SELECT&nbsp;DEPTNO&nbsp;,DEPTNAME&nbsp;,COALESCE(MGRNO&nbsp;,'ABSENT'),ADMRDEPT <br>FROM&nbsp;DEPARTMENT <br>&nbsp;&nbsp;&nbsp;COALESCE</span><span>函数返回</span><span lang=EN-US>()</span><span>中表达式列表中第一个不为空的表达式，可以带多个表达式。</span><span lang=EN-US> <br>&nbsp;&nbsp;&nbsp;</span><span>和</span><span lang=EN-US>sqlserver</span><span>的</span><span lang=EN-US>isnull</span><span>类似，但</span><span lang=EN-US>isnull</span><span>好象只能两个表达式；</span><span lang=EN-US>oracle</span><span>为</span><span lang=EN-US>NVL</span><span>。</span><span>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>6、取得处理的记录数 <br></span><span lang=EN-US>declare&nbsp;v_count&nbsp;int; <br>update tb_test set t1=&#8217;<st1:chmetcnv w:st="on" UnitName="&#8217;" SourceValue="0" HasSpace="False" Negative="False" NumberType="1" TCSC="0">0&#8217;</st1:chmetcnv> <br>where t2=&#8217;<st1:chmetcnv w:st="on" UnitName="&#8217;" SourceValue="2" HasSpace="False" Negative="False" NumberType="1" TCSC="0">2&#8217;</st1:chmetcnv>; <br>--</span><span>检查修改的行数</span><span lang=EN-US>,</span><span>判断指定的记录是否存在</span><span lang=EN-US> <br>get&nbsp;diagnostics v_&nbsp;count=ROW_COUNT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br></span><span>只对</span><span lang=EN-US>update,insert,delete</span><span>起作用</span><span lang=EN-US>. <br></span><span>不对</span><span lang=EN-US>select&nbsp;into&nbsp;</span><span>有效</span><span>&nbsp;<br></span><span><br>7、 类型转换函数 <br></span><span lang=EN-US>select&nbsp;cast&nbsp;(&nbsp;current&nbsp;time&nbsp;as&nbsp;char(8))&nbsp;from&nbsp;tb_market_code&nbsp;<br></span><span><br>8、 values的使用 <br></span><span>如果有多个</span><span lang=EN-US>&nbsp;set&nbsp;&nbsp;</span><span>语句给变量付值，最好使用</span><span lang=EN-US>values</span><span>语句，改写为一句。这样可以提高效率。</span><span lang=EN-US> <br>&nbsp; <br></span><span>但要注意，</span><span lang=EN-US>values</span><span>不能将</span><span lang=EN-US>null</span><span>值付给一个变量。</span><span lang=EN-US> <br>values(null)&nbsp;into&nbsp;out_return_code; <br></span><span>这个语句会报错的。</span><span lang=EN-US> <br></span></p>
<img src ="http://www.blogjava.net/hobby8062/aggbug/114578.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hobby8062/" target="_blank">刘浪</a> 2007-04-29 15:17 <a href="http://www.blogjava.net/hobby8062/articles/114578.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>