﻿<?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-konhon-随笔分类-MS SQL Server</title><link>http://www.blogjava.net/konhon/category/3018.html</link><description>忘掉過去，展望未來。找回自我，超越自我。
&lt;br&gt;
&lt;b&gt;逃避不一定躲的过, 面对不一定最难过, 孤单不一定不快乐, 得到不一定能长久, 失去不一定不再拥有, 可能因为某个理由而伤心难过, 但我却能找个理由让自己快乐.&lt;/b&gt;&lt;br&gt;&lt;p&gt;
&lt;!-- Search Google --&gt;
&lt;left&gt;
&lt;form method="get" action="http://www.google.com/custom" target="google_window"&gt;
&lt;table&gt;
&lt;tr&gt;&lt;td nowrap="nowrap" valign="top" align="left" height="32"&gt;
&lt;a href="http://www.google.com/"&gt;
&lt;img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;input type="text" name="q" size="31" maxlength="255" value=""&gt;&lt;/input&gt;
&lt;input type="submit" name="sa" value="搜索"&gt;&lt;/input&gt;
&lt;input type="hidden" name="client" value="pub-5408663347953425"&gt;&lt;/input&gt;
&lt;input type="hidden" name="forid" value="1"&gt;&lt;/input&gt;
&lt;input type="hidden" name="ie" value="UTF-8"&gt;&lt;/input&gt;
&lt;input type="hidden" name="oe" value="UTF-8"&gt;&lt;/input&gt;
&lt;input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1;"&gt;&lt;/input&gt;
&lt;input type="hidden" name="hl" value="zh-CN"&gt;&lt;/input&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/form&gt;
&lt;/left&gt;
&lt;!-- Search Google --&gt;
</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 11:06:48 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 11:06:48 GMT</pubDate><ttl>60</ttl><item><title>   取汉字拼音首字母的存储过程 </title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15718.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 07:44:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15718.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15718.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15718.html</trackback:ping><description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent>&nbsp;
<P>Create&nbsp; function fun_getPY <BR>&nbsp;( <BR>&nbsp;&nbsp;&nbsp; @str nvarchar(4000) <BR>&nbsp;) <BR>returns nvarchar(4000) <BR>as <BR>begin </P>
<P>&nbsp; declare @word nchar(1),@PY nvarchar(4000) </P>
<P>&nbsp; set @PY='' </P>
<P>&nbsp; while len(@str)&gt;0 <BR>&nbsp; begin <BR>&nbsp;&nbsp;&nbsp; set @word=left(@str,1) </P>
<P>&nbsp;&nbsp;&nbsp; --如果非汉字字符，返回原字符 <BR>&nbsp;&nbsp;&nbsp; set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then (&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; select top 1 PY&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; from&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; <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; select 'A' as PY,N'驁' as word <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; union all select 'B',N'簿' <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; union all select 'C',N'錯' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'D',N'鵽' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'E',N'樲' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'F',N'鰒' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'G',N'腂' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'H',N'夻' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'J',N'攈' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'K',N'穒' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'L',N'鱳' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'M',N'旀' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'N',N'桛' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'O',N'漚' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'P',N'曝' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'Q',N'囕' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'R',N'鶸' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'S',N'蜶' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'T',N'籜' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'W',N'鶩' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'X',N'鑂' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'Y',N'韻' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union all select 'Z',N'咗' <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ) T&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; where word&gt;=@word collate Chinese_PRC_CS_AS_KS_WS&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; order by PY ASC <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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else @word&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end) <BR>&nbsp;&nbsp;&nbsp; set @str=right(@str,len(@str)-1) <BR>&nbsp; end </P>
<P>&nbsp; return @PY </P>
<P>end</P></SPAN><img src ="http://www.blogjava.net/konhon/aggbug/15718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 15:44 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 导出数据到Excel概述</title><link>http://www.blogjava.net/konhon/archive/2005/10/17/15717.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Mon, 17 Oct 2005 07:43:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/17/15717.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15717.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/17/15717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15717.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15717.html</trackback:ping><description><![CDATA[<P><SPAN id=ArticleContent1_ArticleContent1_lblContent> </P>
<P><FONT size=3>This&nbsp;stored&nbsp;procedure&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;insert&nbsp;the&nbsp;result&nbsp;set&nbsp;of&nbsp;the<BR>particular&nbsp;select&nbsp;statement&nbsp;into&nbsp;Excel&nbsp;file&nbsp;(c:\ImportToExcel.xls,<BR>by&nbsp;default).<BR>You&nbsp;can&nbsp;pass&nbsp;the&nbsp;server&nbsp;name,&nbsp;user&nbsp;name,&nbsp;user&nbsp;password,&nbsp;the&nbsp;select<BR>statement&nbsp;to&nbsp;execute,&nbsp;and&nbsp;the&nbsp;file&nbsp;name&nbsp;to&nbsp;store&nbsp;the&nbsp;results&nbsp;set,<BR>as&nbsp;in&nbsp;the&nbsp;example&nbsp;below:</FONT></P>
<P><FONT size=3>EXEC&nbsp;ExportToExcel&nbsp;@server&nbsp;=&nbsp;'.',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@uname&nbsp;=&nbsp;'sa',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@QueryText&nbsp;=&nbsp;'SELECT&nbsp;au_fname&nbsp;FROM&nbsp;pubs..authors',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@filename&nbsp;=&nbsp;'c:\ImportToExcel.xls'</FONT></P>
<P><FONT size=3>/*<BR>Version:&nbsp;SQL&nbsp;Server&nbsp;7.0/2000<BR>Created&nbsp;by:&nbsp;Alexander&nbsp;Chigrik<BR></FONT><FONT size=3>-&nbsp;all&nbsp;about&nbsp;MS&nbsp;SQL<BR>(SQL&nbsp;Server&nbsp;Articles,&nbsp;FAQ,&nbsp;Scripts,&nbsp;Tips&nbsp;and&nbsp;Test&nbsp;Exams).</FONT></P>
<P><FONT size=3>This&nbsp;stored&nbsp;procedure&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;insert&nbsp;the&nbsp;result&nbsp;set&nbsp;of&nbsp;the<BR>particular&nbsp;select&nbsp;statement&nbsp;into&nbsp;Excel&nbsp;file&nbsp;(c:\ImportToExcel.xls,<BR>by&nbsp;default).<BR>You&nbsp;can&nbsp;pass&nbsp;the&nbsp;server&nbsp;name,&nbsp;user&nbsp;name,&nbsp;user&nbsp;password,&nbsp;the&nbsp;select<BR>statement&nbsp;to&nbsp;execute,&nbsp;and&nbsp;the&nbsp;file&nbsp;name&nbsp;to&nbsp;store&nbsp;the&nbsp;results&nbsp;set,<BR>as&nbsp;in&nbsp;the&nbsp;example&nbsp;below:</FONT></P>
<P><FONT size=3>EXEC&nbsp;ExportToExcel&nbsp;@server&nbsp;=&nbsp;'.',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@uname&nbsp;=&nbsp;'sa',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@QueryText&nbsp;=&nbsp;'SELECT&nbsp;au_fname&nbsp;FROM&nbsp;pubs..authors',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@filename&nbsp;=&nbsp;'c:\ImportToExcel.xls'<BR>*/</FONT></P>
<P><FONT size=3>IF&nbsp;OBJECT_ID('ExportToExcel')&nbsp;IS&nbsp;NOT&nbsp;NULL&nbsp;DROP&nbsp;PROC&nbsp;ExportToExcel<BR>GO</FONT></P>
<P><FONT size=3>CREATE&nbsp;PROCEDURE&nbsp;ExportToExcel&nbsp;(<BR>&nbsp;&nbsp;@server&nbsp;sysname&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@uname&nbsp;sysname&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@pwd&nbsp;sysname&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@QueryText&nbsp;varchar(200)&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@filename&nbsp;varchar(200)&nbsp;=&nbsp;'c:\ImportToExcel.xls'<BR>)<BR>AS<BR>DECLARE&nbsp;@SQLServer&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@QueryResults&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@CurrentResultSet&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@object&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@WorkBooks&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@WorkBook&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Range&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@hr&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Columns&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Rows&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@indColumn&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@indRow&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@off_Column&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@off_Row&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code_str&nbsp;varchar(100),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@result_str&nbsp;varchar(255)</FONT></P>
<P><FONT size=3>IF&nbsp;@QueryText&nbsp;IS&nbsp;NULL&nbsp;<BR>&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'Set&nbsp;the&nbsp;query&nbsp;string'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>&nbsp;&nbsp;END</FONT></P>
<P><FONT size=3>--&nbsp;Sets&nbsp;the&nbsp;server&nbsp;to&nbsp;the&nbsp;local&nbsp;server<BR>IF&nbsp;@server&nbsp;IS&nbsp;NULL&nbsp;SELECT&nbsp;@server&nbsp;=&nbsp;@@servername</FONT></P>
<P><FONT size=3>--&nbsp;Sets&nbsp;the&nbsp;username&nbsp;to&nbsp;the&nbsp;current&nbsp;user&nbsp;name<BR>IF&nbsp;@uname&nbsp;IS&nbsp;NULL&nbsp;SELECT&nbsp;@uname&nbsp;=&nbsp;SYSTEM_USER</FONT></P>
<P><FONT size=3>SET&nbsp;NOCOUNT&nbsp;ON</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OACreate&nbsp;'SQLDMO.SQLServer',&nbsp;@SQLServer&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;SQLDMO.SQLServer'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>--&nbsp;&nbsp;Connect&nbsp;to&nbsp;the&nbsp;SQL&nbsp;Server<BR>IF&nbsp;@pwd&nbsp;IS&nbsp;NULL<BR>&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@SQLServer,&nbsp;'Connect',&nbsp;null,&nbsp;@server,&nbsp;@uname<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;Connect'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<BR>&nbsp;&nbsp;END<BR>ELSE<BR>&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@SQLServer,&nbsp;'Connect',&nbsp;null,&nbsp;@server,&nbsp;@uname,&nbsp;@pwd<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;Connect'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<BR>&nbsp;&nbsp;END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@result_str&nbsp;=&nbsp;'ExecuteWithResults("'&nbsp;+&nbsp;@QueryText&nbsp;+&nbsp;'")'<BR>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@SQLServer,&nbsp;@result_str,&nbsp;@QueryResults&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;ExecuteWithResults'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'CurrentResultSet',&nbsp;@CurrentResultSet&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;CurrentResultSet'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'Columns',&nbsp;@Columns&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;Columns'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'Rows',&nbsp;@Rows&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;Rows'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OACreate&nbsp;'Excel.Application',&nbsp;@object&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;Excel.Application'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@object,&nbsp;'WorkBooks',&nbsp;@WorkBooks&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;WorkBooks'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@WorkBooks,&nbsp;'Add',&nbsp;@WorkBook&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;Add'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@object,&nbsp;'Range("A1")',&nbsp;@Range&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;Range'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@indRow&nbsp;=&nbsp;1<BR>SELECT&nbsp;@off_Row&nbsp;=&nbsp;0<BR>SELECT&nbsp;@off_Column&nbsp;=&nbsp;1</FONT></P>
<P><FONT size=3>WHILE&nbsp;(@indRow&nbsp;&lt;=&nbsp;@Rows)<BR>BEGIN<BR>SELECT&nbsp;@indColumn&nbsp;=&nbsp;1</FONT></P>
<P><FONT size=3>WHILE&nbsp;(@indColumn&nbsp;&lt;=&nbsp;@Columns)<BR>BEGIN</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'GetColumnString',&nbsp;@result_str&nbsp;OUT,&nbsp;@indRow,&nbsp;@indColumn<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;GetColumnString'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OASetProperty&nbsp;@Range,&nbsp;'value',&nbsp;@result_str<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;set&nbsp;value'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@Range,&nbsp;'Offset',&nbsp;@Range&nbsp;OUT,&nbsp;@off_Row,&nbsp;@off_Column<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;Offset'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@indColumn&nbsp;=&nbsp;@indColumn&nbsp;+&nbsp;1</FONT></P>
<P><FONT size=3>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@indRow&nbsp;=&nbsp;@indRow&nbsp;+&nbsp;1<BR>SELECT&nbsp;@code_str&nbsp;=&nbsp;'Range("A'&nbsp;+&nbsp;LTRIM(str(@indRow))&nbsp;+&nbsp;'")'<BR>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@object,&nbsp;@code_str,&nbsp;@Range&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;Range'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@result_str&nbsp;=&nbsp;'exec&nbsp;master..xp_cmdshell&nbsp;''del&nbsp;'&nbsp;+&nbsp;@filename&nbsp;+&nbsp;''',&nbsp;no_output'<BR>EXEC(@result_str)<BR>SELECT&nbsp;@result_str&nbsp;=&nbsp;'SaveAs("'&nbsp;+&nbsp;@filename&nbsp;+&nbsp;'")'<BR>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@WorkBook,&nbsp;@result_str<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;SaveAs'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@WorkBook,&nbsp;'Close'<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;Close'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OADestroy&nbsp;@object<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;destroy&nbsp;Excel.Application'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OADestroy&nbsp;@SQLServer<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;destroy&nbsp;SQLDMO.SQLServer'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END<BR>GO</FONT></P></SPAN><img src ="http://www.blogjava.net/konhon/aggbug/15717.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-17 15:43 <a href="http://www.blogjava.net/konhon/archive/2005/10/17/15717.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer和Oracle常用函数对比</title><link>http://www.blogjava.net/konhon/archive/2005/10/13/15447.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Thu, 13 Oct 2005 12:14:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/10/13/15447.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/15447.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/10/13/15447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/15447.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/15447.html</trackback:ping><description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent>数学函数&nbsp;<BR>　　1.绝对值&nbsp;<BR>　　S:select&nbsp;abs(-1)&nbsp;value&nbsp;<BR>　　O:select&nbsp;abs(-1)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　2.取整(大)&nbsp;<BR>　　S:select&nbsp;ceiling(-1.001)&nbsp;value&nbsp;<BR>　　O:select&nbsp;ceil(-1.001)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　3.取整（小）&nbsp;<BR>　　S:select&nbsp;floor(-1.001)&nbsp;value&nbsp;<BR>　　O:select&nbsp;floor(-1.001)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　4.取整（截取）&nbsp;<BR>　　S:select&nbsp;cast(-1.002&nbsp;as&nbsp;int)&nbsp;value&nbsp;<BR>　　O:select&nbsp;trunc(-1.002)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　5.四舍五入&nbsp;<BR>　　S:select&nbsp;round(1.23456,4)&nbsp;value&nbsp;1.23460&nbsp;<BR>　　O:select&nbsp;round(1.23456,4)&nbsp;value&nbsp;from&nbsp;dual&nbsp;1.2346&nbsp;<BR><BR>　　6.e为底的幂&nbsp;<BR>　　S:select&nbsp;Exp(1)&nbsp;value&nbsp;2.7182818284590451&nbsp;<BR>　　O:select&nbsp;Exp(1)&nbsp;value&nbsp;from&nbsp;dual&nbsp;2.71828182&nbsp;<BR><BR>　　7.取e为底的对数&nbsp;<BR>　　S:select&nbsp;log(2.7182818284590451)&nbsp;value&nbsp;1&nbsp;<BR>　　O:select&nbsp;ln(2.7182818284590451)&nbsp;value&nbsp;from&nbsp;dual;&nbsp;1&nbsp;<BR><BR>　　8.取10为底对数&nbsp;<BR>　　S:select&nbsp;log10(10)&nbsp;value&nbsp;1&nbsp;<BR>　　O:select&nbsp;log(10,10)&nbsp;value&nbsp;from&nbsp;dual;&nbsp;1&nbsp;<BR><BR>　　9.取平方&nbsp;<BR>　　S:select&nbsp;SQUARE(4)&nbsp;value&nbsp;16&nbsp;<BR>　　O:select&nbsp;power(4,2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;16&nbsp;<BR><BR>　　10.取平方根&nbsp;<BR>　　S:select&nbsp;SQRT(4)&nbsp;value&nbsp;2&nbsp;<BR>　　O:select&nbsp;SQRT(4)&nbsp;value&nbsp;from&nbsp;dual&nbsp;2&nbsp;<BR><BR>　　11.求任意数为底的幂&nbsp;<BR>　　S:select&nbsp;power(3,4)&nbsp;value&nbsp;81&nbsp;<BR>　　O:select&nbsp;power(3,4)&nbsp;value&nbsp;from&nbsp;dual&nbsp;81&nbsp;<BR><BR>　　12.取随机数&nbsp;<BR>　　S:select&nbsp;rand()&nbsp;value&nbsp;<BR>　　O:select&nbsp;sys.dbms_random.value(0,1)&nbsp;value&nbsp;from&nbsp;dual;&nbsp;<BR><BR>　　13.取符号&nbsp;<BR>　　S:select&nbsp;sign(-8)&nbsp;value&nbsp;-1&nbsp;<BR>　　O:select&nbsp;sign(-8)&nbsp;value&nbsp;from&nbsp;dual&nbsp;-1&nbsp;<BR><BR>　　14.圆周率&nbsp;<BR>　　S:SELECT&nbsp;PI()&nbsp;value&nbsp;3.1415926535897931&nbsp;<BR>　　O:不知道&nbsp;<BR><BR>　　15.sin,cos,tan&nbsp;参数都以弧度为单位&nbsp;<BR>　　例如：select&nbsp;sin(PI()/2)&nbsp;value&nbsp;得到1（SQLServer）&nbsp;<BR><BR>　　16.Asin,Acos,Atan,Atan2&nbsp;返回弧度&nbsp;<BR><BR>　　17.弧度角度互换(SQLServer，Oracle不知道)&nbsp;<BR>　　DEGREES：弧度-〉角度&nbsp;<BR>　　RADIANS：角度-〉弧度&nbsp;<BR><BR>数值间比较&nbsp;<BR><BR>　　18.&nbsp;求集合最大值&nbsp;<BR>　　S:select&nbsp;max(value)&nbsp;value&nbsp;from&nbsp;<BR>　　(select&nbsp;1&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;-2&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;4&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;3&nbsp;value)a&nbsp;<BR><BR>　　O:select&nbsp;greatest(1,-2,4,3)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　19.&nbsp;求集合最小值&nbsp;<BR>　　S:select&nbsp;min(value)&nbsp;value&nbsp;from&nbsp;<BR>　　(select&nbsp;1&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;-2&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;4&nbsp;value&nbsp;<BR>　　union&nbsp;<BR>　　select&nbsp;3&nbsp;value)a&nbsp;<BR><BR>　　O:select&nbsp;least(1,-2,4,3)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　20.如何处理null值(F2中的null以10代替)&nbsp;<BR>　　S:select&nbsp;F1,IsNull(F2,10)&nbsp;value&nbsp;from&nbsp;Tbl&nbsp;<BR>　　O:select&nbsp;F1,nvl(F2,10)&nbsp;value&nbsp;from&nbsp;Tbl&nbsp;<BR><BR>　　21.求字符序号&nbsp;<BR>　　S:select&nbsp;ascii('a')&nbsp;value&nbsp;<BR>　　O:select&nbsp;ascii('a')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　22.从序号求字符&nbsp;<BR>　　S:select&nbsp;char(97)&nbsp;value&nbsp;<BR>　　O:select&nbsp;chr(97)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　23.连接&nbsp;<BR>　　S:select&nbsp;'11'+'22'+'33'&nbsp;value&nbsp;<BR>　　O:select&nbsp;CONCAT('11','22')　　33&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>23.子串位置&nbsp;--返回3&nbsp;<BR>　　S:select&nbsp;CHARINDEX('s','sdsq',2)&nbsp;value&nbsp;<BR>　　O:select&nbsp;INSTR('sdsq','s',2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　23.模糊子串的位置&nbsp;--返回2,参数去掉中间%则返回7&nbsp;<BR>　　S:select&nbsp;patindex('%d%q%','sdsfasdqe')&nbsp;value&nbsp;<BR>　　O:oracle没发现，但是instr可以通过第四个参数控制出现次数&nbsp;<BR>　　select&nbsp;INSTR('sdsfasdqe','sd',1,2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;返回6&nbsp;<BR><BR>　　24.求子串&nbsp;<BR>　　S:select&nbsp;substring('abcd',2,2)&nbsp;value&nbsp;<BR>　　O:select&nbsp;substr('abcd',2,2)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　25.子串代替&nbsp;返回aijklmnef&nbsp;<BR>　　S:SELECT&nbsp;STUFF('abcdef',&nbsp;2,&nbsp;3,&nbsp;'ijklmn')&nbsp;value&nbsp;<BR>　　O:SELECT&nbsp;Replace('abcdef',&nbsp;'bcd',&nbsp;'ijklmn')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　26.子串全部替换&nbsp;<BR>　　S:没发现&nbsp;<BR>　　O:select&nbsp;Translate('fasdbfasegas','fa','我'&nbsp;)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　27.长度&nbsp;<BR>　　S:len,datalength&nbsp;<BR>　　O:length&nbsp;<BR><BR>　　28.大小写转换&nbsp;lower,upper&nbsp;<BR><BR>　　29.单词首字母大写&nbsp;<BR>　　S:没发现&nbsp;<BR>　　O:select&nbsp;INITCAP('abcd&nbsp;dsaf&nbsp;df')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　30.左补空格（LPAD的第一个参数为空格则同space函数）&nbsp;<BR>　　S:select&nbsp;space(10)+'abcd'&nbsp;value&nbsp;<BR>　　O:select&nbsp;LPAD('abcd',14)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　31.右补空格（RPAD的第一个参数为空格则同space函数）&nbsp;<BR>　　S:select&nbsp;'abcd'+space(10)&nbsp;value&nbsp;<BR>　　O:select&nbsp;RPAD('abcd',14)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　32.删除空格&nbsp;<BR>　　S:ltrim,rtrim&nbsp;<BR>　　O:ltrim,rtrim,trim&nbsp;<BR><BR>　　33.&nbsp;重复字符串&nbsp;<BR>　　S:select&nbsp;REPLICATE('abcd',2)&nbsp;value&nbsp;<BR>　　O:没发现&nbsp;<BR><BR>　　34.发音相似性比较(这两个单词返回值一样，发音相同)&nbsp;<BR>　　S:SELECT&nbsp;SOUNDEX&nbsp;('Smith'),&nbsp;SOUNDEX&nbsp;('Smythe')&nbsp;<BR>　　O:SELECT&nbsp;SOUNDEX&nbsp;('Smith'),&nbsp;SOUNDEX&nbsp;('Smythe')&nbsp;from&nbsp;dual&nbsp;<BR>　　SQLServer中用SELECT&nbsp;DIFFERENCE('Smithers',&nbsp;'Smythers')&nbsp;比较soundex的差&nbsp;<BR>　　返回0-4，4为同音，1最高&nbsp;<BR><BR>日期函数&nbsp;<BR>　　35.系统时间&nbsp;<BR>　　S:select&nbsp;getdate()&nbsp;value&nbsp;<BR>　　O:select&nbsp;sysdate&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　36.前后几日&nbsp;<BR>　　直接与整数相加减&nbsp;<BR><BR>　　37.求日期&nbsp;<BR>　　S:select&nbsp;convert(char(10),getdate(),20)&nbsp;value&nbsp;<BR>　　O:select&nbsp;trunc(sysdate)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR>　　select&nbsp;to_char(sysdate,'yyyy-mm-dd')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　38.求时间&nbsp;<BR>　　S:select&nbsp;convert(char(8),getdate(),108)&nbsp;value&nbsp;<BR>　　O:select&nbsp;to_char(sysdate,'hh24:mm:ss')&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>39.取日期时间的其他部分&nbsp;<BR>　　S:DATEPART&nbsp;和&nbsp;DATENAME&nbsp;函数&nbsp;（第一个参数决定）&nbsp;<BR>　　O:to_char函数&nbsp;第二个参数决定&nbsp;<BR><BR>　　参数---------------------------------下表需要补充&nbsp;<BR>　　year&nbsp;yy,&nbsp;yyyy&nbsp;<BR>　　quarter&nbsp;qq,&nbsp;q&nbsp;(季度)&nbsp;<BR>　　month&nbsp;mm,&nbsp;m&nbsp;(m&nbsp;O无效)&nbsp;<BR>　　dayofyear&nbsp;dy,&nbsp;y&nbsp;(O表星期)&nbsp;<BR>　　day&nbsp;dd,&nbsp;d&nbsp;(d&nbsp;O无效)&nbsp;<BR>　　week&nbsp;wk,&nbsp;ww&nbsp;(wk&nbsp;O无效)&nbsp;<BR>　　weekday&nbsp;dw&nbsp;(O不清楚)&nbsp;<BR>　　Hour&nbsp;hh,hh12,hh24&nbsp;(hh12,hh24&nbsp;S无效)&nbsp;<BR>　　minute&nbsp;mi,&nbsp;n&nbsp;(n&nbsp;O无效)&nbsp;<BR>　　second&nbsp;ss,&nbsp;s&nbsp;(s&nbsp;O无效)&nbsp;<BR>　　millisecond&nbsp;ms&nbsp;(O无效)&nbsp;<BR>　　----------------------------------------------&nbsp;<BR><BR>　　40.当月最后一天&nbsp;<BR>　　S:不知道&nbsp;<BR>　　O:select&nbsp;LAST_DAY(sysdate)&nbsp;value&nbsp;from&nbsp;dual&nbsp;<BR><BR>　　41.本星期的某一天（比如星期日）&nbsp;<BR>　　S:不知道&nbsp;<BR>　　O:SELECT&nbsp;Next_day(sysdate,7)&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　42.字符串转时间&nbsp;<BR>　　S:可以直接转或者select&nbsp;cast('2004-09-08'as&nbsp;datetime)&nbsp;value&nbsp;<BR>　　O:SELECT&nbsp;To_date('2004-01-05&nbsp;22:09:38','yyyy-mm-dd&nbsp;hh24-mi-ss')&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　43.求两日期某一部分的差（比如秒）&nbsp;<BR>　　S:select&nbsp;datediff(ss,getdate(),getdate()+12.3)&nbsp;value&nbsp;<BR>　　O:直接用两个日期相减（比如d1-d2=12.3）&nbsp;<BR>　　SELECT&nbsp;(d1-d2)*24*60*60&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　44.根据差值求新的日期（比如分钟）&nbsp;<BR>　　S:select&nbsp;dateadd(mi,8,getdate())&nbsp;value&nbsp;<BR>　　O:SELECT&nbsp;sysdate+8/60/24&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　45.求不同时区时间&nbsp;<BR>　　S:不知道&nbsp;<BR>　　O:SELECT&nbsp;New_time(sysdate,'ydt','gmt'&nbsp;)&nbsp;vaule&nbsp;FROM&nbsp;DUAL;&nbsp;<BR><BR>　　-----时区参数,北京在东8区应该是Ydt-------&nbsp;<BR>　　AST&nbsp;ADT&nbsp;大西洋标准时间&nbsp;<BR>　　BST&nbsp;BDT&nbsp;白令海标准时间&nbsp;<BR>　　CST&nbsp;CDT&nbsp;中部标准时间&nbsp;<BR>　　EST&nbsp;EDT&nbsp;东部标准时间&nbsp;<BR>　　GMT&nbsp;格林尼治标准时间&nbsp;<BR>　　HST&nbsp;HDT&nbsp;阿拉斯加?夏威夷标准时间&nbsp;<BR>　　MST&nbsp;MDT&nbsp;山区标准时间&nbsp;<BR>　　NST&nbsp;纽芬兰标准时间&nbsp;<BR>　　PST&nbsp;PDT&nbsp;太平洋标准时间&nbsp;<BR>　　YST&nbsp;YDT&nbsp;YUKON标准时间</SPAN> <BR><img src ="http://www.blogjava.net/konhon/aggbug/15447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-10-13 20:14 <a href="http://www.blogjava.net/konhon/archive/2005/10/13/15447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KILL SQL Server中的活动进程</title><link>http://www.blogjava.net/konhon/archive/2005/09/22/13767.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Thu, 22 Sep 2005 11:33:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/09/22/13767.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/13767.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/09/22/13767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/13767.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/13767.html</trackback:ping><description><![CDATA[<P>use  master <BR>go<BR>create  proc  killspid  (@dbname  varchar(20))  <BR>as  <BR>begin  <BR>declare  @sql  nvarchar(500),@temp varchar(1000)<BR>declare  @spid  int  <BR>set  @sql='declare  getspid  cursor  for    <BR>select  spid  from  sysprocesses  where  dbid=db_id(<A href="mailto:'''+@dbname+'''"><FONT color=#000000>'''+@dbname+'''</FONT></A>)<BR>exec  (@sql)  <BR>open  getspid  <BR>fetch  next  from  getspid  into  @spid  <BR>while  @@fetch_status  &lt;  &gt;-1  <BR>begin  <BR>  set @temp='kill  '+rtrim(@spid)<BR>  exec(@temp)<BR>fetch  next  from  getspid  into  @spid  <BR>end  <BR>close  getspid  <BR>deallocate  getspid  <BR>end  </P>
<P>--用法  <BR>use  master  <BR>exec  killspid  '数据库名'<BR></P>
<P> </P><img src ="http://www.blogjava.net/konhon/aggbug/13767.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-09-22 19:33 <a href="http://www.blogjava.net/konhon/archive/2005/09/22/13767.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>复制表结构的通用存储过程</title><link>http://www.blogjava.net/konhon/archive/2005/09/17/13196.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Sat, 17 Sep 2005 00:42:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/09/17/13196.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/13196.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/09/17/13196.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/13196.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/13196.html</trackback:ping><description><![CDATA[<SPAN style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 13px; BACKGROUND-IMAGE: url(http://blog.csdn.net/images/blog_csdn_net/zjcxc/36941/o_xgart_bg.gif); PADDING-BOTTOM: 5px; MARGIN: 0px; BORDER-LEFT: #999999 0px solid; WIDTH: 515px; COLOR: #0000ff; LINE-HEIGHT: 16px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-REPEAT: repeat-x; HEIGHT: 28px">复制表结构的通用存储过程 </SPAN>
<P><SPAN style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 13px; BACKGROUND-IMAGE: url(http://blog.csdn.net/images/blog_csdn_net/zjcxc/36941/o_xgart_bg.gif); PADDING-BOTTOM: 5px; MARGIN: 0px; BORDER-LEFT: #999999 0px solid; WIDTH: 515px; COLOR: #0000ff; LINE-HEIGHT: 16px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-REPEAT: repeat-x; HEIGHT: 28px">--&nbsp;Transfer对象的重要属性 </SPAN></P>
<P><SPAN style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 13px; BACKGROUND-IMAGE: url(http://blog.csdn.net/images/blog_csdn_net/zjcxc/36941/o_xgart_bg.gif); PADDING-BOTTOM: 5px; MARGIN: 0px; BORDER-LEFT: #999999 0px solid; WIDTH: 515px; COLOR: #0000ff; LINE-HEIGHT: 16px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-REPEAT: repeat-x; HEIGHT: 28px">--&nbsp;1.&nbsp;属性 </SPAN></P>
<P style="BORDER-RIGHT: #0099cc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #0099cc 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: #0099cc 1px solid; WIDTH: auto; COLOR: #339966; LINE-HEIGHT: 18px; PADDING-TOP: 5px; BORDER-BOTTOM: #0099cc 1px solid; FONT-FAMILY: ' BACKGROUND-COLOR: #fafafa; Verdana: ; quot: ; Courier: ; mono:">属性名&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;描述<BR>---------------------------------&nbsp;-------------------&nbsp;--------------------<BR>CopyAllDefaults&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有默认值<BR>CopyAllObjects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有对象<BR>CopyAllRules&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有规则<BR>CopyAllStoredProcedures&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有存储过程<BR>CopyAllTables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有表<BR>CopyAllTriggers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有触发器<BR>CopyAllUserDefinedDatatypes&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有用户自定义类型<BR>CopyAllViews&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有视图<BR>CopyData&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;所有数据<BR>DestDatabase&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目标对象数据库<BR>DestLogin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目标数据库登陆用户名<BR>DestPassword&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目标数据库登陆密码<BR>DestServer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目标服务器<BR>DestUseTrustedConnection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;用户信任连接<BR>DropDestObjectsFirst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;是否先删除目标对象<BR>IncludeDependencies&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;是否包含依靠对象<BR>ScriptType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;脚本类型 </P>
<P><SPAN style="BORDER-RIGHT: #999999 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #999999 1px solid; PADDING-LEFT: 5px; FONT-WEIGHT: bold; FONT-SIZE: 13px; BACKGROUND-IMAGE: url(http://blog.csdn.net/images/blog_csdn_net/zjcxc/36941/o_xgart_bg.gif); PADDING-BOTTOM: 5px; MARGIN: 0px; BORDER-LEFT: #999999 0px solid; WIDTH: 515px; COLOR: #0000ff; LINE-HEIGHT: 16px; PADDING-TOP: 5px; BORDER-BOTTOM: #999999 1px solid; BACKGROUND-REPEAT: repeat-x; HEIGHT: 28px">--&nbsp;2.&nbsp;重要方法:&nbsp; </SPAN></P>
<P style="BORDER-RIGHT: #0099cc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #0099cc 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: #0099cc 1px solid; WIDTH: auto; COLOR: #339966; LINE-HEIGHT: 18px; PADDING-TOP: 5px; BORDER-BOTTOM: #0099cc 1px solid; FONT-FAMILY: ' BACKGROUND-COLOR: #fafafa; Verdana: ; quot: ; Courier: ; mono:">方法名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;功能描述<BR>---------------------------&nbsp;--------------------------<BR>AddObject&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;增加对象<BR>AddObjectByName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过对象名称增加对象 </P>
<P style="BORDER-RIGHT: #0099cc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #0099cc 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: #0099cc 1px solid; WIDTH: auto; COLOR: #000000; LINE-HEIGHT: 18px; PADDING-TOP: 5px; BORDER-BOTTOM: #0099cc 1px solid; FONT-FAMILY: ' BACKGROUND-COLOR: #ddedfb; Verdana: ; quot: ; Courier: ; mono:">if&nbsp;exists&nbsp;(select&nbsp;*&nbsp;from&nbsp;dbo.sysobjects&nbsp;where&nbsp;id&nbsp;=&nbsp;object_id(N'[dbo].[P_CopyDB]')&nbsp;and&nbsp;OBJECTPROPERTY(id,&nbsp;N'IsProcedure')&nbsp;=&nbsp;1)<BR>drop&nbsp;procedure&nbsp;[dbo].[P_CopyDB]<BR>GO<BR><BR>/*--&nbsp;在&nbsp;SQLServer&nbsp;中使用SQLDMO.Transfer&nbsp;实现数据迁移<BR>&nbsp;&nbsp;&nbsp;&nbsp;存储过程实现源数据库到目标数据库的对象和数据的复制<BR>&nbsp;&nbsp;&nbsp;&nbsp;要求源数据库和目标数据库在同一服务器<BR>&nbsp;&nbsp;&nbsp;&nbsp;如果是要实现不同服务器之间的复制，则需要增加验证信息<BR>--邹建&nbsp;2005.07(引用请保留此信息)--*/<BR><BR>/*--调用示例<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;CREATE&nbsp;DATABASE&nbsp;test<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;P_CopyDB&nbsp;@Source_DB='northwind',@Des_DB='test'<BR>&nbsp;&nbsp;&nbsp;&nbsp;DROP&nbsp;DATABASE&nbsp;test<BR>--*/<BR>CREATE&nbsp;PROCEDURE&nbsp;P_CopyDB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>@Des_DB&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysname,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--目标数据库<BR>@Obj_Type&nbsp;&nbsp;&nbsp;&nbsp;nvarchar(4000)=N'',--复制的对象类型，可以是下列字符串列表：<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;&nbsp;--&nbsp;O&nbsp;所有对象，D&nbsp;默认值，R&nbsp;规则，P&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;&nbsp;&nbsp;--&nbsp;T&nbsp;表，TR&nbsp;触发器，DT&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;&nbsp;&nbsp;--&nbsp;V&nbsp;视图，DATA&nbsp;数据，DEL&nbsp;删除目标对象<BR>@Source_DB&nbsp;&nbsp;&nbsp;sysname=N'',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--源数据库<BR>@ServerName&nbsp;&nbsp;sysname=N'',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--服务器名<BR>@UserName&nbsp;&nbsp;&nbsp;&nbsp;sysname=N'',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--用户名，不指定则表示使用&nbsp;Windows&nbsp;身份登录<BR>@pwd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sysname=N''&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--密码&nbsp;<BR>AS<BR>SET&nbsp;NOCOUNT&nbsp;ON<BR>DECLARE&nbsp;@srvid&nbsp;int,@Dbid&nbsp;int,@S_dbid&nbsp;int,@D_dbid&nbsp;int,@TransferID&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;@err&nbsp;int,@src&nbsp;varchar(255),&nbsp;@desc&nbsp;varchar(255)<BR><BR>IF&nbsp;ISNULL(@ServerName,N'')=N''&nbsp;SET&nbsp;@ServerName=@@SERVERNAME<BR>IF&nbsp;ISNULL(@Source_DB,N'')=N''&nbsp;SET&nbsp;@Source_DB=DB_NAME() </P>
<P style="BORDER-RIGHT: #0099cc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #0099cc 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: #0099cc 1px solid; WIDTH: auto; COLOR: #000000; LINE-HEIGHT: 18px; PADDING-TOP: 5px; BORDER-BOTTOM: #0099cc 1px solid; FONT-FAMILY: ' BACKGROUND-COLOR: #ddedfb; Verdana: ; quot: ; Courier: ; mono:">--创建sqldmo对象·<BR>EXEC&nbsp;@err=sp_oacreate&nbsp;'sqldmo.sqlserver',@srvid&nbsp;OUT<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>--连接服务器<BR>IF&nbsp;ISNULL(@UserName,N'')=N''&nbsp;--使用&nbsp;Windows&nbsp;身份登录<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@err=sp_oasetproperty&nbsp;@srvid,'loginsecure',-1<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@err=sp_oamethod&nbsp;@srvid,'connect',NULL,@servername<BR>END<BR>ELSE<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@err=sp_oamethod&nbsp;@srvid,'connect',NULL,@servername,@UserName,@pwd<BR><BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>--获取数据库集<BR>EXEC&nbsp;@err=sp_oagetproperty&nbsp;@srvid,'databases',@Dbid&nbsp;OUT<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>--选择源数据库&nbsp;&nbsp;&nbsp;&nbsp;<BR>EXEC&nbsp;@err=sp_oamethod&nbsp;@Dbid,'item',@S_dbid&nbsp;OUT,@Source_DB<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>--选择目标数据库&nbsp;&nbsp;&nbsp;&nbsp;<BR>EXEC&nbsp;@err=sp_oamethod&nbsp;@Dbid,'item',@D_dbid&nbsp;OUT,@Des_DB<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>--设置复制的对象<BR>EXEC&nbsp;@err=sp_oacreate&nbsp;'SQLDMO.Transfer',@TransferID&nbsp;OUT<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>--设置目标服务器信息<BR>EXEC&nbsp;@err=sp_oasetproperty&nbsp;&nbsp;@TransferID,'DestServer',@ServerName<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>&nbsp;&nbsp;--设置连接用户<BR>IF&nbsp;ISNULL(@UserName,N'')=N''&nbsp;--使用&nbsp;Windows&nbsp;身份登录<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@err=sp_oasetproperty&nbsp;@TransferID,'DestUseTrustedConnection',1<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR>END<BR>ELSE<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@err=sp_oasetproperty&nbsp;@TransferID,'DestLogin',@UserName<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@err=sp_oasetproperty&nbsp;@TransferID,'DestPassword',@pwd<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR>END<BR><BR>&nbsp;&nbsp;--设置复制对象信息<BR>EXEC&nbsp;@err=sp_oasetproperty&nbsp;@TransferID,'DestDatabase',@Des_DB<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err </P>
<P style="BORDER-RIGHT: #0099cc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #0099cc 1px solid; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; MARGIN: 5px; BORDER-LEFT: #0099cc 1px solid; WIDTH: auto; COLOR: #000000; LINE-HEIGHT: 18px; PADDING-TOP: 5px; BORDER-BOTTOM: #0099cc 1px solid; FONT-FAMILY: ' BACKGROUND-COLOR: #ddedfb; Verdana: ; quot: ; Courier: ; mono:">DECLARE&nbsp;tb&nbsp;CURSOR&nbsp;FAST_FORWARD&nbsp;LOCAL<BR>FOR<BR>SELECT&nbsp;Name&nbsp;FROM(<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',D,',&nbsp;&nbsp;&nbsp;Name=N'CopyAllDefaults'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',O,',&nbsp;&nbsp;&nbsp;Name=N'CopyAllObjects'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',R,',&nbsp;&nbsp;&nbsp;Name=N'CopyAllRules'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',P,',&nbsp;&nbsp;&nbsp;Name=N'CopyAllStoredProcedures'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',T,',&nbsp;&nbsp;&nbsp;Name=N'CopyAllTables'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',TR,',&nbsp;&nbsp;Name=N'CopyAllTriggers'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',DT,',&nbsp;&nbsp;Name=N'CopyAllUserDefinedDatatypes'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',V,',&nbsp;&nbsp;&nbsp;Name=N'CopyAllViews'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',DATA,',Name=N'CopyData'&nbsp;UNION&nbsp;ALL<BR>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;KeyWord=N',DEL,',&nbsp;Name=N'DropDestObjectsFirst'<BR>)A&nbsp;WHERE&nbsp;CHARINDEX(KeyWord,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASE&nbsp;WHEN&nbsp;ISNULL(@Obj_Type,N'')=''&nbsp;THEN&nbsp;',O,DATA,'&nbsp;ELSE&nbsp;@Obj_Type&nbsp;END)&gt;0<BR>OPEN&nbsp;tb<BR>FETCH&nbsp;tb&nbsp;INTO&nbsp;@src<BR>WHILE&nbsp;@@FETCH_STATUS=0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@err=sp_oasetproperty&nbsp;@TransferID,@src,1<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR>&nbsp;&nbsp;&nbsp;&nbsp;FETCH&nbsp;tb&nbsp;INTO&nbsp;@src<BR>END<BR>CLOSE&nbsp;tb<BR>DEALLOCATE&nbsp;tb<BR><BR>--复制对象<BR>EXEC&nbsp;@err=sp_oamethod&nbsp;@S_dbid,'Transfer',null,@TransferID<BR>IF&nbsp;@err&lt;&gt;0&nbsp;GOTO&nbsp;lb_Err<BR><BR>--结束<BR>SET&nbsp;@err=0<BR>GOTO&nbsp;lb_Exit<BR><BR>--错误处理<BR>lb_Err:<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;sp_oageterrorinfo&nbsp;NULL,&nbsp;@src&nbsp;OUT,&nbsp;@desc&nbsp;OUT&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;RAISERROR(N'错误编号&nbsp;%#x,&nbsp;错误源&nbsp;"%s",&nbsp;错误描述&nbsp;"%s"',16,1,@err,@src,@desc)<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;-1<BR><BR>lb_Exit:<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;sp_OADestroy&nbsp;@Dbid&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;sp_OADestroy&nbsp;@srvid&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;sp_OADestroy&nbsp;@TransferID&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN&nbsp;@err<BR>GO </P><img src ="http://www.blogjava.net/konhon/aggbug/13196.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-09-17 08:42 <a href="http://www.blogjava.net/konhon/archive/2005/09/17/13196.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 导出数据到Excel概述    </title><link>http://www.blogjava.net/konhon/archive/2005/09/17/13195.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Sat, 17 Sep 2005 00:41:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/09/17/13195.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/13195.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/09/17/13195.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/13195.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/13195.html</trackback:ping><description><![CDATA[<SPAN id=ArticleContent1_ArticleContent1_lblContent>&nbsp;
<P><FONT size=3>This&nbsp;stored&nbsp;procedure&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;insert&nbsp;the&nbsp;result&nbsp;set&nbsp;of&nbsp;the<BR>particular&nbsp;select&nbsp;statement&nbsp;into&nbsp;Excel&nbsp;file&nbsp;(c:\ImportToExcel.xls,<BR>by&nbsp;default).<BR>You&nbsp;can&nbsp;pass&nbsp;the&nbsp;server&nbsp;name,&nbsp;user&nbsp;name,&nbsp;user&nbsp;password,&nbsp;the&nbsp;select<BR>statement&nbsp;to&nbsp;execute,&nbsp;and&nbsp;the&nbsp;file&nbsp;name&nbsp;to&nbsp;store&nbsp;the&nbsp;results&nbsp;set,<BR>as&nbsp;in&nbsp;the&nbsp;example&nbsp;below:</FONT></P>
<P><FONT size=3>EXEC&nbsp;ExportToExcel&nbsp;@server&nbsp;=&nbsp;'.',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@uname&nbsp;=&nbsp;'sa',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@QueryText&nbsp;=&nbsp;'SELECT&nbsp;au_fname&nbsp;FROM&nbsp;pubs..authors',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@filename&nbsp;=&nbsp;'c:\ImportToExcel.xls'</FONT></P>
<P><FONT size=3>/*<BR>Version:&nbsp;SQL&nbsp;Server&nbsp;7.0/2000<BR>Created&nbsp;by:&nbsp;Alexander&nbsp;Chigrik<BR></FONT><FONT size=3>-&nbsp;all&nbsp;about&nbsp;MS&nbsp;SQL<BR>(SQL&nbsp;Server&nbsp;Articles,&nbsp;FAQ,&nbsp;Scripts,&nbsp;Tips&nbsp;and&nbsp;Test&nbsp;Exams).</FONT></P>
<P><FONT size=3>This&nbsp;stored&nbsp;procedure&nbsp;can&nbsp;be&nbsp;used&nbsp;to&nbsp;insert&nbsp;the&nbsp;result&nbsp;set&nbsp;of&nbsp;the<BR>particular&nbsp;select&nbsp;statement&nbsp;into&nbsp;Excel&nbsp;file&nbsp;(c:\ImportToExcel.xls,<BR>by&nbsp;default).<BR>You&nbsp;can&nbsp;pass&nbsp;the&nbsp;server&nbsp;name,&nbsp;user&nbsp;name,&nbsp;user&nbsp;password,&nbsp;the&nbsp;select<BR>statement&nbsp;to&nbsp;execute,&nbsp;and&nbsp;the&nbsp;file&nbsp;name&nbsp;to&nbsp;store&nbsp;the&nbsp;results&nbsp;set,<BR>as&nbsp;in&nbsp;the&nbsp;example&nbsp;below:</FONT></P>
<P><FONT size=3>EXEC&nbsp;ExportToExcel&nbsp;@server&nbsp;=&nbsp;'.',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@uname&nbsp;=&nbsp;'sa',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@QueryText&nbsp;=&nbsp;'SELECT&nbsp;au_fname&nbsp;FROM&nbsp;pubs..authors',<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@filename&nbsp;=&nbsp;'c:\ImportToExcel.xls'<BR>*/</FONT></P>
<P><FONT size=3>IF&nbsp;OBJECT_ID('ExportToExcel')&nbsp;IS&nbsp;NOT&nbsp;NULL&nbsp;DROP&nbsp;PROC&nbsp;ExportToExcel<BR>GO</FONT></P>
<P><FONT size=3>CREATE&nbsp;PROCEDURE&nbsp;ExportToExcel&nbsp;(<BR>&nbsp;&nbsp;@server&nbsp;sysname&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@uname&nbsp;sysname&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@pwd&nbsp;sysname&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@QueryText&nbsp;varchar(200)&nbsp;=&nbsp;null,<BR>&nbsp;&nbsp;@filename&nbsp;varchar(200)&nbsp;=&nbsp;'c:\ImportToExcel.xls'<BR>)<BR>AS<BR>DECLARE&nbsp;@SQLServer&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@QueryResults&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@CurrentResultSet&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@object&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@WorkBooks&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@WorkBook&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Range&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@hr&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Columns&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@Rows&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@indColumn&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@indRow&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@off_Column&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@off_Row&nbsp;int,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@code_str&nbsp;varchar(100),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@result_str&nbsp;varchar(255)</FONT></P>
<P><FONT size=3>IF&nbsp;@QueryText&nbsp;IS&nbsp;NULL&nbsp;<BR>&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'Set&nbsp;the&nbsp;query&nbsp;string'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>&nbsp;&nbsp;END</FONT></P>
<P><FONT size=3>--&nbsp;Sets&nbsp;the&nbsp;server&nbsp;to&nbsp;the&nbsp;local&nbsp;server<BR>IF&nbsp;@server&nbsp;IS&nbsp;NULL&nbsp;SELECT&nbsp;@server&nbsp;=&nbsp;@@servername</FONT></P>
<P><FONT size=3>--&nbsp;Sets&nbsp;the&nbsp;username&nbsp;to&nbsp;the&nbsp;current&nbsp;user&nbsp;name<BR>IF&nbsp;@uname&nbsp;IS&nbsp;NULL&nbsp;SELECT&nbsp;@uname&nbsp;=&nbsp;SYSTEM_USER</FONT></P>
<P><FONT size=3>SET&nbsp;NOCOUNT&nbsp;ON</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OACreate&nbsp;'SQLDMO.SQLServer',&nbsp;@SQLServer&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;SQLDMO.SQLServer'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>--&nbsp;&nbsp;Connect&nbsp;to&nbsp;the&nbsp;SQL&nbsp;Server<BR>IF&nbsp;@pwd&nbsp;IS&nbsp;NULL<BR>&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@SQLServer,&nbsp;'Connect',&nbsp;null,&nbsp;@server,&nbsp;@uname<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;Connect'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<BR>&nbsp;&nbsp;END<BR>ELSE<BR>&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@SQLServer,&nbsp;'Connect',&nbsp;null,&nbsp;@server,&nbsp;@uname,&nbsp;@pwd<BR>&nbsp;&nbsp;&nbsp;&nbsp;IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;Connect'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<BR>&nbsp;&nbsp;END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@result_str&nbsp;=&nbsp;'ExecuteWithResults("'&nbsp;+&nbsp;@QueryText&nbsp;+&nbsp;'")'<BR>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@SQLServer,&nbsp;@result_str,&nbsp;@QueryResults&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;ExecuteWithResults'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'CurrentResultSet',&nbsp;@CurrentResultSet&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;CurrentResultSet'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'Columns',&nbsp;@Columns&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;Columns'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'Rows',&nbsp;@Rows&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;Rows'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OACreate&nbsp;'Excel.Application',&nbsp;@object&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;Excel.Application'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@object,&nbsp;'WorkBooks',&nbsp;@WorkBooks&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;WorkBooks'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@WorkBooks,&nbsp;'Add',&nbsp;@WorkBook&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;Add'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@object,&nbsp;'Range("A1")',&nbsp;@Range&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;Range'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@indRow&nbsp;=&nbsp;1<BR>SELECT&nbsp;@off_Row&nbsp;=&nbsp;0<BR>SELECT&nbsp;@off_Column&nbsp;=&nbsp;1</FONT></P>
<P><FONT size=3>WHILE&nbsp;(@indRow&nbsp;&lt;=&nbsp;@Rows)<BR>BEGIN<BR>SELECT&nbsp;@indColumn&nbsp;=&nbsp;1</FONT></P>
<P><FONT size=3>WHILE&nbsp;(@indColumn&nbsp;&lt;=&nbsp;@Columns)<BR>BEGIN</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@QueryResults,&nbsp;'GetColumnString',&nbsp;@result_str&nbsp;OUT,&nbsp;@indRow,&nbsp;@indColumn<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;GetColumnString'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OASetProperty&nbsp;@Range,&nbsp;'value',&nbsp;@result_str<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;set&nbsp;value'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@Range,&nbsp;'Offset',&nbsp;@Range&nbsp;OUT,&nbsp;@off_Row,&nbsp;@off_Column<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;get&nbsp;Offset'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@indColumn&nbsp;=&nbsp;@indColumn&nbsp;+&nbsp;1</FONT></P>
<P><FONT size=3>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@indRow&nbsp;=&nbsp;@indRow&nbsp;+&nbsp;1<BR>SELECT&nbsp;@code_str&nbsp;=&nbsp;'Range("A'&nbsp;+&nbsp;LTRIM(str(@indRow))&nbsp;+&nbsp;'")'<BR>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAGetProperty&nbsp;@object,&nbsp;@code_str,&nbsp;@Range&nbsp;OUT<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;create&nbsp;Range'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>END</FONT></P>
<P><FONT size=3>SELECT&nbsp;@result_str&nbsp;=&nbsp;'exec&nbsp;master..xp_cmdshell&nbsp;''del&nbsp;'&nbsp;+&nbsp;@filename&nbsp;+&nbsp;''',&nbsp;no_output'<BR>EXEC(@result_str)<BR>SELECT&nbsp;@result_str&nbsp;=&nbsp;'SaveAs("'&nbsp;+&nbsp;@filename&nbsp;+&nbsp;'")'<BR>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@WorkBook,&nbsp;@result_str<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;SaveAs'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OAMethod&nbsp;@WorkBook,&nbsp;'Close'<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;with&nbsp;method&nbsp;Close'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OADestroy&nbsp;@object<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;destroy&nbsp;Excel.Application'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END</FONT></P>
<P><FONT size=3>EXEC&nbsp;@hr&nbsp;=&nbsp;sp_OADestroy&nbsp;@SQLServer<BR>IF&nbsp;@hr&nbsp;&lt;&gt;&nbsp;0<BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;PRINT&nbsp;'error&nbsp;destroy&nbsp;SQLDMO.SQLServer'<BR>&nbsp;&nbsp;&nbsp;&nbsp;RETURN<BR>END<BR>GO</FONT></P></SPAN><img src ="http://www.blogjava.net/konhon/aggbug/13195.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-09-17 08:41 <a href="http://www.blogjava.net/konhon/archive/2005/09/17/13195.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>F_BomList</title><link>http://www.blogjava.net/konhon/archive/2005/09/08/12457.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Thu, 08 Sep 2005 11:09:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/09/08/12457.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/12457.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/09/08/12457.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/12457.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/12457.html</trackback:ping><description><![CDATA[<P>// 一個算物料計劃的存儲過程<BR>CREATE FUNCTION DBO.F_BomList<BR>(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @PPartNo NVARCHAR(20),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @PQuantity INT = 1,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @PType BIT = 0<BR>)<BR>RETURNS @BomList TABLE(<BR>&nbsp;&nbsp; PartNo NVARCHAR(20),<BR>&nbsp;&nbsp; FUsage FLOAT,<BR>&nbsp;&nbsp; Raw_ID INT)<BR>AS&nbsp; <BR>BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp; DECLARE @BomListTmp TABLE(<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CPartNo NVARCHAR(20),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PartNo NVARCHAR(20),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FUsage FLOAT,<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _Level INT)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A href="mailto:--@Lev">--@Lev</A>是層的定義<BR>&nbsp;&nbsp;&nbsp;&nbsp; DECLARE @LLevel INT, @LSample INT<BR>&nbsp;&nbsp;&nbsp;&nbsp; SET @LLevel&nbsp; = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp; SELECT @LSample = ISNULL(Sample, 1) FROM Bom WHERE CPartNo = @PPartNo<BR>&nbsp;&nbsp;&nbsp;&nbsp; IF @LSample = 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET @LSample = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp; --先取@PPartNo的第一層數据到#Temp<BR>&nbsp;&nbsp;&nbsp;&nbsp; INSERT INTO @BomListTmp (CPartNo, PartNo, FUsage, _Level) <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT CPartNo, CPartNo, 1, @LLevel FROM Bom WHERE CPartNo = @PPartNo<BR>&nbsp;&nbsp;&nbsp;&nbsp; --以循環方式取得所有的下層元件清單到#Temp<BR>&nbsp;&nbsp;&nbsp;&nbsp; WHILE EXISTS(SELECT CPartNo FROM @BomListTmp WHERE _Level = @LLevel)<BR>&nbsp;&nbsp;&nbsp;&nbsp; BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET @LLevel = @LLevel + 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; INSERT INTO @BomListTmp (CPartNo, PartNo, FUsage, _Level)<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; SELECT a.CPartNo, a.PartNo, <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; CASE WHEN @LLevel = 2 THEN&nbsp; a.FUsage * b.FUsage / @LSample ELSE a.FUsage * b.FUsage END, @LLevel<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; FROM BomDtl a, (SELECT PartNo, FUsage FROM @BomListTmp WHERE _Level + 1= @LLevel) b<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; WHERE a.CPartNo = b.PartNo<BR>&nbsp;&nbsp;&nbsp;&nbsp; END<BR>&nbsp;&nbsp;&nbsp;&nbsp; -- 計算總量<BR>&nbsp;&nbsp;&nbsp;&nbsp; INSERT INTO @BomList(PartNo, FUsage, Raw_ID)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECT PartNo, SUM(FUsage) * @PQuantity FUsage, 0 FROM @BomListTmp WHERE _Level &lt;&gt; 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GROUP BY PartNo<BR>&nbsp;&nbsp;&nbsp;&nbsp; IF @PType = 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 標識非原材料<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UPDATE @BomList SET Raw_ID = 1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WHERE PartNo IN (SELECT DISTINCT CPartNo FROM BomDtl)<BR>&nbsp;&nbsp;&nbsp;&nbsp; RETURN<BR>End</P>
<P>&nbsp;</P><img src ="http://www.blogjava.net/konhon/aggbug/12457.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-09-08 19:09 <a href="http://www.blogjava.net/konhon/archive/2005/09/08/12457.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>删除重复记录的方法</title><link>http://www.blogjava.net/konhon/archive/2005/08/25/11066.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Thu, 25 Aug 2005 07:40:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/08/25/11066.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/11066.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/08/25/11066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/11066.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/11066.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;学习sql有一段时间了，发现在我建了一个用来测试的表（没有建索引）中出现了许多的重复记录。后来总结了一些删除重复记录的方法，在Oracle中，可以通过唯一rowid实现删除重复记录；还可以建临时表来实现...这个只提到其中的几种简单实用的方法，希望可以和大家分享（以表employee为例）。 SQL&gt; desc employee &nbsp;Name&nb...&nbsp;&nbsp;<a href='http://www.blogjava.net/konhon/archive/2005/08/25/11066.html'>阅读全文</a><img src ="http://www.blogjava.net/konhon/aggbug/11066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-08-25 15:40 <a href="http://www.blogjava.net/konhon/archive/2005/08/25/11066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>批量修改字段的類型(SQL Server)</title><link>http://www.blogjava.net/konhon/archive/2005/08/03/9125.html</link><dc:creator>konhon 优华</dc:creator><author>konhon 优华</author><pubDate>Wed, 03 Aug 2005 06:36:00 GMT</pubDate><guid>http://www.blogjava.net/konhon/archive/2005/08/03/9125.html</guid><wfw:comment>http://www.blogjava.net/konhon/comments/9125.html</wfw:comment><comments>http://www.blogjava.net/konhon/archive/2005/08/03/9125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/konhon/comments/commentRss/9125.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/konhon/services/trackbacks/9125.html</trackback:ping><description><![CDATA[<P>今天上午因工作需要, 寫了一個在SQL Server中批量修改字段類型的小程序, 功能不是很完善, 尚未考慮字段的默認值.但該程序涉及到了修改主鍵的字段類型, 修改有默認值的字段跟修改主鍵字段的類型原理是一樣的.這裡只是對有默認值的字段修改提供一些參考, 如果有興趣自己可以完善.<BR><FONT style="BACKGROUND-COLOR: #d3d3d3">關於修改有默認值的字段的一些參考資料<BR>/*<BR>從SysColumns表中cdefault字段是否為0可以判斷出是否有默認值<BR>查詢出字段的默認值<BR>Select text From SysComments<BR>Where id = (Select cdefault from SysColumns where name = '字段')<BR>修改有默認值的字段時要先將對就的Default or DEFAULT constraint先刪除才行, 當然在修改完字段時要重建啦.<BR>Select Name From SysObjects Where xType = 'D'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and Parent_Obj = (Select id From SysObjects Where Name = '表名')<BR>*/</FONT><BR><FONT color=#ff1493>程序代碼如下:</FONT><BR><FONT color=#000000>/*<BR>&nbsp;&nbsp;&nbsp; 此程序沒有考慮字段的默認值<BR>*/<BR>-- xtype = '167' 字段類型為 varchar 可用 select * from systypes 查看<BR>Declare&nbsp; curAlterInfo Cursor For Select a.Name AlterFieldName, a.Length, a.IsNullable, b.Name AlterTableName<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; From SysColumns a, SysObjects b Where a.id = b.id and a.xType = '167'<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and b.xType = 'u' and a.cdefault = 0<BR>declare @AlterFieldName nvarchar(50),&nbsp; -- 修改的字段<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @AlterTableName nvarchar(50),&nbsp; -- 修改的表名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Length int, -- 字段以長度<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @IsNullable bit, -- 字段是否允許為空<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @PkName nvarchar(50), -- 主鍵名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @PkFieldName nvarchar(500), --主鍵字段名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @TmpFieldName nvarchar(50),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @TmpTableName nvarchar(50),<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @Sql nvarchar(500)</FONT></P>
<P><FONT color=#000000>Set NoCount On<BR>Begin Tran<BR>open curAlterInfo<BR>Fetch curAlterInfo Into @AlterFieldName, @Length, @IsNullable, @AlterTableName<BR>While @@Fetch_Status=0<BR>Begin<BR>&nbsp;&nbsp;&nbsp; print @AlterTableName<BR>&nbsp;&nbsp;&nbsp; --檢查修改的表是否有主鍵<BR>&nbsp;&nbsp;&nbsp; If Exists(Select Name From SysObjects Where xType = 'PK'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and Parent_Obj = (Select id From SysObjects Where Name = @AlterTableName))<BR>&nbsp;&nbsp;&nbsp; Begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @TmpTableName = @AlterTableName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 取得主鍵名<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Select @PkName = Name From SysObjects Where xType = 'PK'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and Parent_Obj = (Select id From SysObjects Where Name = @AlterTableName)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @PkFieldName = ''<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 主鍵字段<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Declare curPkFieldName Cursor For Select b.Name From SysIndexKeys a, SysColumns b<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Where a.id = (Select id From SysIndexes Where Name = @PkName)<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; and a.indid = 1 and a.colid = b.colid and a.id = b.id<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 取得所有的主鍵字段<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Open curPkFieldName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fetch curPkFieldName Into @TmpFieldName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; While @@fetch_status = 0<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @PkFieldName = @PkFieldName + @TmpFieldName + ','<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fetch curPkFieldName Into @TmpFieldName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Close curPkFieldName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Deallocate curPkFieldName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- 刪除舊主鍵<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @Sql = 'ALTER TABLE '+ @AlterTableName + ' DROP CONSTRAINT ' + @PkName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print @Sql<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exec(@Sql)&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp; end<BR>&nbsp;&nbsp;&nbsp; -- 修改字段<BR>&nbsp;&nbsp;&nbsp; Set @Sql = 'ALTER TABLE ' + @AlterTableName + ' ALTER COLUMN ' + @AlterFieldName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + ' NVARCHAR( ' + CAST(@Length AS NVARCHAR) + ')'<BR>&nbsp;&nbsp;&nbsp; -- 是否允許為空<BR>&nbsp;&nbsp;&nbsp; if @IsNullable = 0 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @Sql = @Sql + ' NOT NULL'<BR>&nbsp;&nbsp;&nbsp; Print @sql<BR>&nbsp;&nbsp;&nbsp; Exec(@sql)<BR>&nbsp;&nbsp;&nbsp; Fetch curAlterInfo Into @AlterFieldName, @Length, @IsNullable, @AlterTableName<BR>&nbsp;&nbsp;&nbsp; -- 創建主鍵<BR>&nbsp;&nbsp;&nbsp; If (@AlterTableName &lt;&gt; @TmpTableName or @@fetch_status &lt;&gt; 0) and @PkFieldName &lt;&gt; '' <BR>&nbsp;&nbsp;&nbsp; Begin<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @PkFieldName = Left(@PkFieldName, Len(@PkFieldName) - 1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @Sql =&nbsp; ' ALTER TABLE ' + @TmpTableName + ' ADD CONSTRAINT ' + @PkName<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; ' PRIMARY KEY CLUSTERED(' + @PkFieldName + ') ON [PRIMARY]'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Print @Sql<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exec(@Sql)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print '-----------------------------'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set @PkFieldName = ''<BR>&nbsp;&nbsp;&nbsp; End<BR>End<BR>Close curAlterInfo<BR>Deallocate curAlterInfo<BR>If @@Error &gt; 0<BR>&nbsp;&nbsp; Rollback Tran<BR>Else<BR>&nbsp;&nbsp; Commit Tran<BR>Set NoCount Off</FONT></P><img src ="http://www.blogjava.net/konhon/aggbug/9125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/konhon/" target="_blank">konhon 优华</a> 2005-08-03 14:36 <a href="http://www.blogjava.net/konhon/archive/2005/08/03/9125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>