??xml version="1.0" encoding="utf-8" standalone="yes"?>97在线观看免费,久88久久88久久久,美女欧美视频在线观看免费http://www.aygfsteel.com/konhon/category/3018.html忘掉過去Q展望未來。找回自我,越自我? <br> <b>逃避不一定躲的过, 面对不一定最难过, 孤单不一定不快乐, 得到不一定能长久, 失去不一定不再拥? 可能因ؓ某个理由而伤心难q? 但我却能找个理由让自己快?</b><br><p> <!-- Search Google --> <left> <form method="get" action="http://www.google.com/custom" target="google_window"> <table> <tr><td nowrap="nowrap" valign="top" align="left" height="32"> <a > <img src="http://www.google.com/logos/Logo_25wht.gif" border="0" alt="Google" align="middle"></img></a> <input type="text" name="q" size="31" maxlength="255" value=""></input> <input type="submit" name="sa" value="搜烦"></input> <input type="hidden" name="client" value="pub-5408663347953425"></input> <input type="hidden" name="forid" value="1"></input> <input type="hidden" name="ie" value="UTF-8"></input> <input type="hidden" name="oe" value="UTF-8"></input> <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;"></input> <input type="hidden" name="hl" value="zh-CN"></input> </td></tr></table> </form> </left> <!-- Search Google --> zh-cnTue, 27 Feb 2007 11:06:48 GMTTue, 27 Feb 2007 11:06:48 GMT60 取汉字拼音首字母的存储过E?http://www.aygfsteel.com/konhon/archive/2005/10/17/15718.htmlkonhon 优华konhon 优华Mon, 17 Oct 2005 07:44:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/10/17/15718.htmlhttp://www.aygfsteel.com/konhon/comments/15718.htmlhttp://www.aygfsteel.com/konhon/archive/2005/10/17/15718.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/15718.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/15718.html 

Create  function fun_getPY
 (
    @str nvarchar(4000)
 )
returns nvarchar(4000)
as
begin

  declare @word nchar(1),@PY nvarchar(4000)

  set @PY=''

  while len(@str)>0
  begin
    set @word=left(@str,1)

    --如果非汉字字W,q回原字W?
    set @PY=@PY+(case when unicode(@word) between 19968 and 19968+20901
               then ( 
                            select top 1 PY 
                            from 
                            ( 
                             select 'A' as PY,N'? as word
                             union all select 'B',N'?
                             union all select 'C',N'?
                     union all select 'D',N'?
                     union all select 'E',N'?
                     union all select 'F',N'?
                     union all select 'G',N'?
                     union all select 'H',N'?
                     union all select 'J',N'?
                     union all select 'K',N'I?
                     union all select 'L',N'?
                     union all select 'M',N'旀'
                     union all select 'N',N'?
                     union all select 'O',N'?
                     union all select 'P',N'?
                     union all select 'Q',N'?
                     union all select 'R',N'?
                     union all select 'S',N'?
                     union all select 'T',N'c?
                     union all select 'W',N'?
                     union all select 'X',N'?
                     union all select 'Y',N'?
                     union all select 'Z',N'?
                      ) T 
                   where word>=@word collate Chinese_PRC_CS_AS_KS_WS 
                   order by PY ASC
                          ) 
                      else @word 
                 end)
    set @str=right(@str,len(@str)-1)
  end

  return @PY

end



konhon 优华 2005-10-17 15:44 发表评论
]]>
导出数据到Excel概述http://www.aygfsteel.com/konhon/archive/2005/10/17/15717.htmlkonhon 优华konhon 优华Mon, 17 Oct 2005 07:43:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/10/17/15717.htmlhttp://www.aygfsteel.com/konhon/comments/15717.htmlhttp://www.aygfsteel.com/konhon/archive/2005/10/17/15717.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/15717.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/15717.html

This stored procedure can be used to insert the result set of the
particular select statement into Excel file (c:\ImportToExcel.xls,
by default).
You can pass the server name, user name, user password, the select
statement to execute, and the file name to store the results set,
as in the example below:

EXEC ExportToExcel @server = '.',
                   @uname = 'sa',
                   @QueryText = 'SELECT au_fname FROM pubs..authors',
                   @filename = 'c:\ImportToExcel.xls'

/*
Version: SQL Server 7.0/2000
Created by: Alexander Chigrik
- all about MS SQL
(SQL Server Articles, FAQ, Scripts, Tips and Test Exams).

This stored procedure can be used to insert the result set of the
particular select statement into Excel file (c:\ImportToExcel.xls,
by default).
You can pass the server name, user name, user password, the select
statement to execute, and the file name to store the results set,
as in the example below:

EXEC ExportToExcel @server = '.',
                   @uname = 'sa',
                   @QueryText = 'SELECT au_fname FROM pubs..authors',
                   @filename = 'c:\ImportToExcel.xls'
*/

IF OBJECT_ID('ExportToExcel') IS NOT NULL DROP PROC ExportToExcel
GO

CREATE PROCEDURE ExportToExcel (
  @server sysname = null,
  @uname sysname = null,
  @pwd sysname = null,
  @QueryText varchar(200) = null,
  @filename varchar(200) = 'c:\ImportToExcel.xls'
)
AS
DECLARE @SQLServer int,
        @QueryResults int,
        @CurrentResultSet int,
        @object int,
        @WorkBooks int,
        @WorkBook int,
        @Range int,
        @hr int,
        @Columns int,
        @Rows int,
        @indColumn int,
        @indRow int,
        @off_Column int,
        @off_Row int,
        @code_str varchar(100),
        @result_str varchar(255)

IF @QueryText IS NULL 
  BEGIN
    PRINT 'Set the query string'
    RETURN
  END

-- Sets the server to the local server
IF @server IS NULL SELECT @server = @@servername

-- Sets the username to the current user name
IF @uname IS NULL SELECT @uname = SYSTEM_USER

SET NOCOUNT ON

EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @SQLServer OUT
IF @hr <> 0
BEGIN
    PRINT 'error create SQLDMO.SQLServer'
    RETURN
END

--  Connect to the SQL Server
IF @pwd IS NULL
  BEGIN
    EXEC @hr = sp_OAMethod @SQLServer, 'Connect', null, @server, @uname
    IF @hr <> 0
       BEGIN
         PRINT 'error Connect'
         RETURN
       END
  END
ELSE
  BEGIN
    EXEC @hr = sp_OAMethod @SQLServer, 'Connect', null, @server, @uname, @pwd
    IF @hr <> 0
      BEGIN
        PRINT 'error Connect'
        RETURN
      END
  END

SELECT @result_str = 'ExecuteWithResults("' + @QueryText + '")'
EXEC @hr = sp_OAMethod @SQLServer, @result_str, @QueryResults OUT
IF @hr <> 0
BEGIN
    PRINT 'error with method ExecuteWithResults'
    RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'CurrentResultSet', @CurrentResultSet OUT
IF @hr <> 0
BEGIN
    PRINT 'error get CurrentResultSet'
    RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'Columns', @Columns OUT
IF @hr <> 0
BEGIN
    PRINT 'error get Columns'
    RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'Rows', @Rows OUT
IF @hr <> 0
BEGIN
    PRINT 'error get Rows'
    RETURN
END

EXEC @hr = sp_OACreate 'Excel.Application', @object OUT
IF @hr <> 0
BEGIN
    PRINT 'error create Excel.Application'
    RETURN
END

EXEC @hr = sp_OAGetProperty @object, 'WorkBooks', @WorkBooks OUT
IF @hr <> 0
BEGIN
    PRINT 'error create WorkBooks'
    RETURN
END

EXEC @hr = sp_OAGetProperty @WorkBooks, 'Add', @WorkBook OUT
IF @hr <> 0
BEGIN
    PRINT 'error with method Add'
    RETURN
END

EXEC @hr = sp_OAGetProperty @object, 'Range("A1")', @Range OUT
IF @hr <> 0
BEGIN
    PRINT 'error create Range'
    RETURN
END

SELECT @indRow = 1
SELECT @off_Row = 0
SELECT @off_Column = 1

WHILE (@indRow <= @Rows)
BEGIN
SELECT @indColumn = 1

WHILE (@indColumn <= @Columns)
BEGIN

EXEC @hr = sp_OAMethod @QueryResults, 'GetColumnString', @result_str OUT, @indRow, @indColumn
IF @hr <> 0
BEGIN
    PRINT 'error get GetColumnString'
    RETURN
END

EXEC @hr = sp_OASetProperty @Range, 'value', @result_str
IF @hr <> 0
BEGIN
    PRINT 'error set value'
    RETURN
END

EXEC @hr = sp_OAGetProperty @Range, 'Offset', @Range OUT, @off_Row, @off_Column
IF @hr <> 0
BEGIN
    PRINT 'error get Offset'
    RETURN
END

SELECT @indColumn = @indColumn + 1

END

SELECT @indRow = @indRow + 1
SELECT @code_str = 'Range("A' + LTRIM(str(@indRow)) + '")'
EXEC @hr = sp_OAGetProperty @object, @code_str, @Range OUT
IF @hr <> 0
BEGIN
    PRINT 'error create Range'
    RETURN
END

END

SELECT @result_str = 'exec master..xp_cmdshell ''del ' + @filename + ''', no_output'
EXEC(@result_str)
SELECT @result_str = 'SaveAs("' + @filename + '")'
EXEC @hr = sp_OAMethod @WorkBook, @result_str
IF @hr <> 0
BEGIN
    PRINT 'error with method SaveAs'
    RETURN
END

EXEC @hr = sp_OAMethod @WorkBook, 'Close'
IF @hr <> 0
BEGIN
    PRINT 'error with method Close'
    RETURN
END

EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
    PRINT 'error destroy Excel.Application'
    RETURN
END

EXEC @hr = sp_OADestroy @SQLServer
IF @hr <> 0
BEGIN
    PRINT 'error destroy SQLDMO.SQLServer'
    RETURN
END
GO



konhon 优华 2005-10-17 15:43 发表评论
]]>
SQLServer和Oracle常用函数Ҏhttp://www.aygfsteel.com/konhon/archive/2005/10/13/15447.htmlkonhon 优华konhon 优华Thu, 13 Oct 2005 12:14:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/10/13/15447.htmlhttp://www.aygfsteel.com/konhon/comments/15447.htmlhttp://www.aygfsteel.com/konhon/archive/2005/10/13/15447.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/15447.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/15447.html数学函数 
  1.l对?nbsp;
  S:select abs(-1) value 
  O:select abs(-1) value from dual 

  2.取整(? 
  S:select ceiling(-1.001) value 
  O:select ceil(-1.001) value from dual 

  3.取整Q小Q?nbsp;
  S:select floor(-1.001) value 
  O:select floor(-1.001) value from dual 

  4.取整Q截取) 
  S:select cast(-1.002 as int) value 
  O:select trunc(-1.002) value from dual 

  5.四舍五入 
  S:select round(1.23456,4) value 1.23460 
  O:select round(1.23456,4) value from dual 1.2346 

  6.e为底的幂 
  S:select Exp(1) value 2.7182818284590451 
  O:select Exp(1) value from dual 2.71828182 

  7.取e为底的对?nbsp;
  S:select log(2.7182818284590451) value 1 
  O:select ln(2.7182818284590451) value from dual; 1 

  8.?0为底Ҏ 
  S:select log10(10) value 1 
  O:select log(10,10) value from dual; 1 

  9.取^?nbsp;
  S:select SQUARE(4) value 16 
  O:select power(4,2) value from dual 16 

  10.取^Ҏ 
  S:select SQRT(4) value 2 
  O:select SQRT(4) value from dual 2 

  11.求Q意数为底的幂 
  S:select power(3,4) value 81 
  O:select power(3,4) value from dual 81 

  12.取随机数 
  S:select rand() value 
  O:select sys.dbms_random.value(0,1) value from dual; 

  13.取符?nbsp;
  S:select sign(-8) value -1 
  O:select sign(-8) value from dual -1 

  14.圆周?nbsp;
  S:SELECT PI() value 3.1415926535897931 
  O:不知?nbsp;

  15.sin,cos,tan 参数都以弧度为单?nbsp;
  例如Qselect sin(PI()/2) value 得到1QSQLServerQ?nbsp;

  16.Asin,Acos,Atan,Atan2 q回弧度 

  17.弧度角度互换(SQLServerQOracle不知? 
  DEGREESQ弧?〉角?nbsp;
  RADIANSQ角?〉弧?nbsp;

数值间比较 

  18. 求集合最大?nbsp;
  S:select max(value) value from 
  (select 1 value 
  union 
  select -2 value 
  union 
  select 4 value 
  union 
  select 3 value)a 

  O:select greatest(1,-2,4,3) value from dual 

  19. 求集合最?nbsp;
  S:select min(value) value from 
  (select 1 value 
  union 
  select -2 value 
  union 
  select 4 value 
  union 
  select 3 value)a 

  O:select least(1,-2,4,3) value from dual 

  20.如何处理null?F2中的null?0代替) 
  S:select F1,IsNull(F2,10) value from Tbl 
  O:select F1,nvl(F2,10) value from Tbl 

  21.求字W序?nbsp;
  S:select ascii('a') value 
  O:select ascii('a') value from dual 

  22.从序h字符 
  S:select char(97) value 
  O:select chr(97) value from dual 

  23.q接 
  S:select '11'+'22'+'33' value 
  O:select CONCAT('11','22')  33 value from dual 

23.子串位置 --q回3 
  S:select CHARINDEX('s','sdsq',2) value 
  O:select INSTR('sdsq','s',2) value from dual 

  23.模糊子串的位|?nbsp;--q回2,参数L中间%则返? 
  S:select patindex('%d%q%','sdsfasdqe') value 
  O:oracle没发玎ͼ但是instr可以通过W四个参数控制出现次?nbsp;
  select INSTR('sdsfasdqe','sd',1,2) value from dual q回6 

  24.求子?nbsp;
  S:select substring('abcd',2,2) value 
  O:select substr('abcd',2,2) value from dual 

  25.子串代替 q回aijklmnef 
  S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value 
  O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual 

  26.子串全部替换 
  S:没发?nbsp;
  O:select Translate('fasdbfasegas','fa','? ) value from dual 

  27.长度 
  S:len,datalength 
  O:length 

  28.大小写{?nbsp;lower,upper 

  29.单词首字母大?nbsp;
  S:没发?nbsp;
  O:select INITCAP('abcd dsaf df') value from dual 

  30.左补I格QLPAD的第一个参CؓI格则同space函数Q?nbsp;
  S:select space(10)+'abcd' value 
  O:select LPAD('abcd',14) value from dual 

  31.双I格QRPAD的第一个参CؓI格则同space函数Q?nbsp;
  S:select 'abcd'+space(10) value 
  O:select RPAD('abcd',14) value from dual 

  32.删除I格 
  S:ltrim,rtrim 
  O:ltrim,rtrim,trim 

  33. 重复字符?nbsp;
  S:select REPLICATE('abcd',2) value 
  O:没发?nbsp;

  34.发音怼性比?q两个单词返回gP发音相同) 
  S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') 
  O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual 
  SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差 
  q回0-4Q?为同韻I1最?nbsp;

日期函数 
  35.pȝ旉 
  S:select getdate() value 
  O:select sysdate value from dual 

  36.前后几日 
  直接与整数相加减 

  37.求日?nbsp;
  S:select convert(char(10),getdate(),20) value 
  O:select trunc(sysdate) value from dual 
  select to_char(sysdate,'yyyy-mm-dd') value from dual 

  38.求时?nbsp;
  S:select convert(char(8),getdate(),108) value 
  O:select to_char(sysdate,'hh24:mm:ss') value from dual 

39.取日期时间的其他部分 
  S:DATEPART ?nbsp;DATENAME 函数 Q第一个参数决定) 
  O:to_char函数 W二个参数决?nbsp;

  参数---------------------------------下表需要补?nbsp;
  year yy, yyyy 
  quarter qq, q (季度) 
  month mm, m (m O无效) 
  dayofyear dy, y (O表星? 
  day dd, d (d O无效) 
  week wk, ww (wk O无效) 
  weekday dw (O不清? 
  Hour hh,hh12,hh24 (hh12,hh24 S无效) 
  minute mi, n (n O无效) 
  second ss, s (s O无效) 
  millisecond ms (O无效) 
  ---------------------------------------------- 

  40.当月最后一?nbsp;
  S:不知?nbsp;
  O:select LAST_DAY(sysdate) value from dual 

  41.本星期的某一天(比如星期日) 
  S:不知?nbsp;
  O:SELECT Next_day(sysdate,7) vaule FROM DUAL; 

  42.字符串{旉 
  S:可以直接转或者select cast('2004-09-08'as datetime) value 
  O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL; 

  43.求两日期某一部分的差Q比如秒Q?nbsp;
  S:select datediff(ss,getdate(),getdate()+12.3) value 
  O:直接用两个日期相减(比如d1-d2=12.3Q?nbsp;
  SELECT (d1-d2)*24*60*60 vaule FROM DUAL; 

  44.Ҏ差值求新的日期Q比如分钟) 
  S:select dateadd(mi,8,getdate()) value 
  O:SELECT sysdate+8/60/24 vaule FROM DUAL; 

  45.求不同时区时?nbsp;
  S:不知?nbsp;
  O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL; 

  -----时区参数,北京在东8区应该是Ydt------- 
  AST ADT 大西z标准时?nbsp;
  BST BDT 白oh准时?nbsp;
  CST CDT 中部标准旉 
  EST EDT 东部标准旉 
  GMT 格林治标准旉 
  HST HDT 阿拉斯加?夏威h准时?nbsp;
  MST MDT 山区标准旉 
  NST U芬兰标准时?nbsp;
  PST PDT 太^z标准时?nbsp;
  YST YDT YUKON标准旉


konhon 优华 2005-10-13 20:14 发表评论
]]>
KILL SQL Server中的zdq程http://www.aygfsteel.com/konhon/archive/2005/09/22/13767.htmlkonhon 优华konhon 优华Thu, 22 Sep 2005 11:33:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/09/22/13767.htmlhttp://www.aygfsteel.com/konhon/comments/13767.htmlhttp://www.aygfsteel.com/konhon/archive/2005/09/22/13767.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/13767.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/13767.htmluse  master
go
create  proc  killspid  (@dbname  varchar(20)) 
as 
begin 
declare  @sql  nvarchar(500),@temp varchar(1000)
declare  @spid  int 
set  @sql='declare  getspid  cursor  for   
select  spid  from  sysprocesses  where  dbid=db_id('''+@dbname+''')
exec  (@sql) 
open  getspid 
fetch  next  from  getspid  into  @spid 
while  @@fetch_status  <  >-1 
begin 
  set @temp='kill  '+rtrim(@spid)
  exec(@temp)
fetch  next  from  getspid  into  @spid 
end 
close  getspid 
deallocate  getspid 
end 

--用法 
use  master 
exec  killspid  '数据库名'

 



konhon 优华 2005-09-22 19:33 发表评论
]]>
复制表结构的通用存储q程http://www.aygfsteel.com/konhon/archive/2005/09/17/13196.htmlkonhon 优华konhon 优华Sat, 17 Sep 2005 00:42:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/09/17/13196.htmlhttp://www.aygfsteel.com/konhon/comments/13196.htmlhttp://www.aygfsteel.com/konhon/archive/2005/09/17/13196.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/13196.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/13196.html复制表结构的通用存储q程

-- Transfer对象的重要属?

-- 1. 属?

属性名                            cd                描述
--------------------------------- ------------------- --------------------
CopyAllDefaults                Boolean    所有默认?BR>CopyAllObjects                 Boolean    所有对?BR>CopyAllRules                   Boolean    所有规?BR>CopyAllStoredProcedures        Boolean    所有存储过E?BR>CopyAllTables                  Boolean    所有表
CopyAllTriggers                Boolean    所有触发器
CopyAllUserDefinedDatatypes    Boolean    所有用戯定义cd
CopyAllViews                   Boolean    所有视?BR>CopyData                       Boolean    所有数?BR>DestDatabase                   String     目标对象数据?BR>DestLogin                      String     目标数据库登陆用户名
DestPassword                   String     目标数据库登陆密?BR>DestServer                     String     目标服务?BR>DestUseTrustedConnection       Boolean    用户信Qq接
DropDestObjectsFirst           Boolean    是否先删除目标对?BR>IncludeDependencies            Boolean    是否包含依靠对象
ScriptType                     Boolean    脚本cd

-- 2. 重要Ҏ: 

Ҏ名称                    功能描述
--------------------------- --------------------------
AddObject                   增加对象
AddObjectByName             通过对象名称增加对象

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[P_CopyDB]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[P_CopyDB]
GO

/*-- ?nbsp;SQLServer 中用SQLDMO.Transfer 实现数据q移
    存储q程实现源数据库到目标数据库的对象和数据的复?BR>    要求源数据库和目标数据库在同一服务?BR>    如果是要实现不同服务器之间的复制Q则需要增加验证信?BR>--邹徏 2005.07(引用请保留此信息)--*/

/*--调用CZ

    CREATE DATABASE test
    EXEC P_CopyDB @Source_DB='northwind',@Des_DB='test'
    DROP DATABASE test
--*/
CREATE PROCEDURE P_CopyDB     
@Des_DB      sysname,           --目标数据?BR>@Obj_Type    nvarchar(4000)=N'',--复制的对象类型,可以是下列字W串列表Q?BR>                                -- O 所有对象,D 默认|R 规则QP 存储q程
                                -- T 表,TR 触发器,DT 用户定义数据cd
                                -- V 视图QDATA 数据QDEL 删除目标对象
@Source_DB   sysname=N'',       --源数据库
@ServerName  sysname=N'',       --服务器名
@UserName    sysname=N'',       --用户名,不指定则表示使用 Windows w䆾d
@pwd         sysname=N''        --密码 
AS
SET NOCOUNT ON
DECLARE @srvid int,@Dbid int,@S_dbid int,@D_dbid int,@TransferID int,
    @err int,@src varchar(255), @desc varchar(255)

IF ISNULL(@ServerName,N'')=N'' SET @ServerName=@@SERVERNAME
IF ISNULL(@Source_DB,N'')=N'' SET @Source_DB=DB_NAME()

--创徏sqldmo对象·
EXEC @err=sp_oacreate 'sqldmo.sqlserver',@srvid OUT
IF @err<>0 GOTO lb_Err

--q接服务?BR>IF ISNULL(@UserName,N'')=N'' --使用 Windows w䆾d
BEGIN
    EXEC @err=sp_oasetproperty @srvid,'loginsecure',-1
    IF @err<>0 GOTO lb_Err

    EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername
END
ELSE
    EXEC @err=sp_oamethod @srvid,'connect',NULL,@servername,@UserName,@pwd

IF @err<>0 GOTO lb_Err

--获取数据库集
EXEC @err=sp_oagetproperty @srvid,'databases',@Dbid OUT
IF @err<>0 GOTO lb_Err

--选择源数据库    
EXEC @err=sp_oamethod @Dbid,'item',@S_dbid OUT,@Source_DB
IF @err<>0 GOTO lb_Err

--选择目标数据?nbsp;   
EXEC @err=sp_oamethod @Dbid,'item',@D_dbid OUT,@Des_DB
IF @err<>0 GOTO lb_Err

--讄复制的对?BR>EXEC @err=sp_oacreate 'SQLDMO.Transfer',@TransferID OUT
IF @err<>0 GOTO lb_Err

--讄目标服务器信?BR>EXEC @err=sp_oasetproperty  @TransferID,'DestServer',@ServerName
IF @err<>0 GOTO lb_Err

  --讄q接用户
IF ISNULL(@UserName,N'')=N'' --使用 Windows w䆾d
BEGIN
    EXEC @err=sp_oasetproperty @TransferID,'DestUseTrustedConnection',1
    IF @err<>0 GOTO lb_Err
END
ELSE
BEGIN
    EXEC @err=sp_oasetproperty @TransferID,'DestLogin',@UserName
    IF @err<>0 GOTO lb_Err

    EXEC @err=sp_oasetproperty @TransferID,'DestPassword',@pwd
    IF @err<>0 GOTO lb_Err
END

  --讄复制对象信息
EXEC @err=sp_oasetproperty @TransferID,'DestDatabase',@Des_DB
IF @err<>0 GOTO lb_Err

DECLARE tb CURSOR FAST_FORWARD LOCAL
FOR
SELECT Name FROM(
    SELECT KeyWord=N',D,',   Name=N'CopyAllDefaults' UNION ALL
    SELECT KeyWord=N',O,',   Name=N'CopyAllObjects' UNION ALL
    SELECT KeyWord=N',R,',   Name=N'CopyAllRules' UNION ALL
    SELECT KeyWord=N',P,',   Name=N'CopyAllStoredProcedures' UNION ALL
    SELECT KeyWord=N',T,',   Name=N'CopyAllTables' UNION ALL
    SELECT KeyWord=N',TR,',  Name=N'CopyAllTriggers' UNION ALL
    SELECT KeyWord=N',DT,',  Name=N'CopyAllUserDefinedDatatypes' UNION ALL
    SELECT KeyWord=N',V,',   Name=N'CopyAllViews' UNION ALL
    SELECT KeyWord=N',DATA,',Name=N'CopyData' UNION ALL
    SELECT KeyWord=N',DEL,', Name=N'DropDestObjectsFirst'
)A WHERE CHARINDEX(KeyWord,
        CASE WHEN ISNULL(@Obj_Type,N'')='' THEN ',O,DATA,' ELSE @Obj_Type END)>0
OPEN tb
FETCH tb INTO @src
WHILE @@FETCH_STATUS=0
BEGIN
    EXEC @err=sp_oasetproperty @TransferID,@src,1
    IF @err<>0 GOTO lb_Err
    FETCH tb INTO @src
END
CLOSE tb
DEALLOCATE tb

--复制对象
EXEC @err=sp_oamethod @S_dbid,'Transfer',null,@TransferID
IF @err<>0 GOTO lb_Err

--l束
SET @err=0
GOTO lb_Exit

--错误处理
lb_Err:
    EXEC sp_oageterrorinfo NULL, @src OUT, @desc OUT 
    RAISERROR(N'错误~号 %#x, 错误?nbsp;"%s", 错误描述 "%s"',16,1,@err,@src,@desc)
    RETURN -1

lb_Exit:
    EXEC sp_OADestroy @Dbid  
    EXEC sp_OADestroy @srvid 
    EXEC sp_OADestroy @TransferID 
    RETURN @err
GO



konhon 优华 2005-09-17 08:42 发表评论
]]>
导出数据到Excel概述 http://www.aygfsteel.com/konhon/archive/2005/09/17/13195.htmlkonhon 优华konhon 优华Sat, 17 Sep 2005 00:41:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/09/17/13195.htmlhttp://www.aygfsteel.com/konhon/comments/13195.htmlhttp://www.aygfsteel.com/konhon/archive/2005/09/17/13195.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/13195.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/13195.html 

This stored procedure can be used to insert the result set of the
particular select statement into Excel file (c:\ImportToExcel.xls,
by default).
You can pass the server name, user name, user password, the select
statement to execute, and the file name to store the results set,
as in the example below:

EXEC ExportToExcel @server = '.',
                   @uname = 'sa',
                   @QueryText = 'SELECT au_fname FROM pubs..authors',
                   @filename = 'c:\ImportToExcel.xls'

/*
Version: SQL Server 7.0/2000
Created by: Alexander Chigrik
- all about MS SQL
(SQL Server Articles, FAQ, Scripts, Tips and Test Exams).

This stored procedure can be used to insert the result set of the
particular select statement into Excel file (c:\ImportToExcel.xls,
by default).
You can pass the server name, user name, user password, the select
statement to execute, and the file name to store the results set,
as in the example below:

EXEC ExportToExcel @server = '.',
                   @uname = 'sa',
                   @QueryText = 'SELECT au_fname FROM pubs..authors',
                   @filename = 'c:\ImportToExcel.xls'
*/

IF OBJECT_ID('ExportToExcel') IS NOT NULL DROP PROC ExportToExcel
GO

CREATE PROCEDURE ExportToExcel (
  @server sysname = null,
  @uname sysname = null,
  @pwd sysname = null,
  @QueryText varchar(200) = null,
  @filename varchar(200) = 'c:\ImportToExcel.xls'
)
AS
DECLARE @SQLServer int,
        @QueryResults int,
        @CurrentResultSet int,
        @object int,
        @WorkBooks int,
        @WorkBook int,
        @Range int,
        @hr int,
        @Columns int,
        @Rows int,
        @indColumn int,
        @indRow int,
        @off_Column int,
        @off_Row int,
        @code_str varchar(100),
        @result_str varchar(255)

IF @QueryText IS NULL 
  BEGIN
    PRINT 'Set the query string'
    RETURN
  END

-- Sets the server to the local server
IF @server IS NULL SELECT @server = @@servername

-- Sets the username to the current user name
IF @uname IS NULL SELECT @uname = SYSTEM_USER

SET NOCOUNT ON

EXEC @hr = sp_OACreate 'SQLDMO.SQLServer', @SQLServer OUT
IF @hr <> 0
BEGIN
    PRINT 'error create SQLDMO.SQLServer'
    RETURN
END

--  Connect to the SQL Server
IF @pwd IS NULL
  BEGIN
    EXEC @hr = sp_OAMethod @SQLServer, 'Connect', null, @server, @uname
    IF @hr <> 0
       BEGIN
         PRINT 'error Connect'
         RETURN
       END
  END
ELSE
  BEGIN
    EXEC @hr = sp_OAMethod @SQLServer, 'Connect', null, @server, @uname, @pwd
    IF @hr <> 0
      BEGIN
        PRINT 'error Connect'
        RETURN
      END
  END

SELECT @result_str = 'ExecuteWithResults("' + @QueryText + '")'
EXEC @hr = sp_OAMethod @SQLServer, @result_str, @QueryResults OUT
IF @hr <> 0
BEGIN
    PRINT 'error with method ExecuteWithResults'
    RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'CurrentResultSet', @CurrentResultSet OUT
IF @hr <> 0
BEGIN
    PRINT 'error get CurrentResultSet'
    RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'Columns', @Columns OUT
IF @hr <> 0
BEGIN
    PRINT 'error get Columns'
    RETURN
END

EXEC @hr = sp_OAMethod @QueryResults, 'Rows', @Rows OUT
IF @hr <> 0
BEGIN
    PRINT 'error get Rows'
    RETURN
END

EXEC @hr = sp_OACreate 'Excel.Application', @object OUT
IF @hr <> 0
BEGIN
    PRINT 'error create Excel.Application'
    RETURN
END

EXEC @hr = sp_OAGetProperty @object, 'WorkBooks', @WorkBooks OUT
IF @hr <> 0
BEGIN
    PRINT 'error create WorkBooks'
    RETURN
END

EXEC @hr = sp_OAGetProperty @WorkBooks, 'Add', @WorkBook OUT
IF @hr <> 0
BEGIN
    PRINT 'error with method Add'
    RETURN
END

EXEC @hr = sp_OAGetProperty @object, 'Range("A1")', @Range OUT
IF @hr <> 0
BEGIN
    PRINT 'error create Range'
    RETURN
END

SELECT @indRow = 1
SELECT @off_Row = 0
SELECT @off_Column = 1

WHILE (@indRow <= @Rows)
BEGIN
SELECT @indColumn = 1

WHILE (@indColumn <= @Columns)
BEGIN

EXEC @hr = sp_OAMethod @QueryResults, 'GetColumnString', @result_str OUT, @indRow, @indColumn
IF @hr <> 0
BEGIN
    PRINT 'error get GetColumnString'
    RETURN
END

EXEC @hr = sp_OASetProperty @Range, 'value', @result_str
IF @hr <> 0
BEGIN
    PRINT 'error set value'
    RETURN
END

EXEC @hr = sp_OAGetProperty @Range, 'Offset', @Range OUT, @off_Row, @off_Column
IF @hr <> 0
BEGIN
    PRINT 'error get Offset'
    RETURN
END

SELECT @indColumn = @indColumn + 1

END

SELECT @indRow = @indRow + 1
SELECT @code_str = 'Range("A' + LTRIM(str(@indRow)) + '")'
EXEC @hr = sp_OAGetProperty @object, @code_str, @Range OUT
IF @hr <> 0
BEGIN
    PRINT 'error create Range'
    RETURN
END

END

SELECT @result_str = 'exec master..xp_cmdshell ''del ' + @filename + ''', no_output'
EXEC(@result_str)
SELECT @result_str = 'SaveAs("' + @filename + '")'
EXEC @hr = sp_OAMethod @WorkBook, @result_str
IF @hr <> 0
BEGIN
    PRINT 'error with method SaveAs'
    RETURN
END

EXEC @hr = sp_OAMethod @WorkBook, 'Close'
IF @hr <> 0
BEGIN
    PRINT 'error with method Close'
    RETURN
END

EXEC @hr = sp_OADestroy @object
IF @hr <> 0
BEGIN
    PRINT 'error destroy Excel.Application'
    RETURN
END

EXEC @hr = sp_OADestroy @SQLServer
IF @hr <> 0
BEGIN
    PRINT 'error destroy SQLDMO.SQLServer'
    RETURN
END
GO



konhon 优华 2005-09-17 08:41 发表评论
]]>
F_BomListhttp://www.aygfsteel.com/konhon/archive/2005/09/08/12457.htmlkonhon 优华konhon 优华Thu, 08 Sep 2005 11:09:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/09/08/12457.htmlhttp://www.aygfsteel.com/konhon/comments/12457.htmlhttp://www.aygfsteel.com/konhon/archive/2005/09/08/12457.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/12457.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/12457.html// 一個算物料a劃的存儲過E?BR>CREATE FUNCTION DBO.F_BomList
(
      @PPartNo NVARCHAR(20),
      @PQuantity INT = 1,
      @PType BIT = 0
)
RETURNS @BomList TABLE(
   PartNo NVARCHAR(20),
   FUsage FLOAT,
   Raw_ID INT)
AS 
BEGIN
     DECLARE @BomListTmp TABLE(
           CPartNo NVARCHAR(20),
           PartNo NVARCHAR(20),
           FUsage FLOAT,
           _Level INT)
      --@Lev是層的定?BR>     DECLARE @LLevel INT, @LSample INT
     SET @LLevel  = 1
     SELECT @LSample = ISNULL(Sample, 1) FROM Bom WHERE CPartNo = @PPartNo
     IF @LSample = 0
          SET @LSample = 1
     --先取@PPartNo的第一層數据到#Temp
     INSERT INTO @BomListTmp (CPartNo, PartNo, FUsage, _Level)
                     SELECT CPartNo, CPartNo, 1, @LLevel FROM Bom WHERE CPartNo = @PPartNo
     --以@環方式取得所有的下層元g清單?Temp
     WHILE EXISTS(SELECT CPartNo FROM @BomListTmp WHERE _Level = @LLevel)
     BEGIN
           SET @LLevel = @LLevel + 1
           INSERT INTO @BomListTmp (CPartNo, PartNo, FUsage, _Level)
                           SELECT a.CPartNo, a.PartNo,
                           CASE WHEN @LLevel = 2 THEN  a.FUsage * b.FUsage / @LSample ELSE a.FUsage * b.FUsage END, @LLevel
                           FROM BomDtl a, (SELECT PartNo, FUsage FROM @BomListTmp WHERE _Level + 1= @LLevel) b
                           WHERE a.CPartNo = b.PartNo
     END
     -- a算^量
     INSERT INTO @BomList(PartNo, FUsage, Raw_ID)
            SELECT PartNo, SUM(FUsage) * @PQuantity FUsage, 0 FROM @BomListTmp WHERE _Level <> 1
            GROUP BY PartNo
     IF @PType = 0
           -- 標識非原材料
          UPDATE @BomList SET Raw_ID = 1
                WHERE PartNo IN (SELECT DISTINCT CPartNo FROM BomDtl)
     RETURN
End

 



konhon 优华 2005-09-08 19:09 发表评论
]]>
删除重复记录的方?/title><link>http://www.aygfsteel.com/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.aygfsteel.com/konhon/archive/2005/08/25/11066.html</guid><wfw:comment>http://www.aygfsteel.com/konhon/comments/11066.html</wfw:comment><comments>http://www.aygfsteel.com/konhon/archive/2005/08/25/11066.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/konhon/comments/commentRss/11066.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/konhon/services/trackbacks/11066.html</trackback:ping><description><![CDATA[     摘要:   学习sql有一D|间了Q发现在我徏了一个用来测试的表(没有建烦引)中出C许多的重复记录。后来ȝ了一些删除重复记录的ҎQ在Oracle中,可以通过唯一rowid实现删除重复记录Q还可以Z时表来实?..q个只提到其中的几种单实用的ҎQ希望可以和大家分nQ以表employeeZQ? SQL> desc employee  Name&nb...  <a href='http://www.aygfsteel.com/konhon/archive/2005/08/25/11066.html'>阅读全文</a><img src ="http://www.aygfsteel.com/konhon/aggbug/11066.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/konhon/" target="_blank">konhon 优华</a> 2005-08-25 15:40 <a href="http://www.aygfsteel.com/konhon/archive/2005/08/25/11066.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>扚w修改字段的類?SQL Server)http://www.aygfsteel.com/konhon/archive/2005/08/03/9125.htmlkonhon 优华konhon 优华Wed, 03 Aug 2005 06:36:00 GMThttp://www.aygfsteel.com/konhon/archive/2005/08/03/9125.htmlhttp://www.aygfsteel.com/konhon/comments/9125.htmlhttp://www.aygfsteel.com/konhon/archive/2005/08/03/9125.html#Feedback0http://www.aygfsteel.com/konhon/comments/commentRss/9125.htmlhttp://www.aygfsteel.com/konhon/services/trackbacks/9125.html今天上午因工作需? 寫了一個在SQL Server中批量修改字D類型的程? 功能不是很完? 未考慮字段的默認?但該E序涉及C修改主鍵的字D類? 修改有默認值的字段跟修改主鍵字D늚型原理是一樣的.這只是有默認值的字段修改提供一些參? 如果有興自己可以完?
關於修改有默認值的字段的一些參考資?BR>/*
從SysColumns表中cdefault字段是否?可以判斷出是否有默認?BR>查詢出字D늚默認?BR>Select text From SysComments
Where id = (Select cdefault from SysColumns where name = '字段')
修改有默認值的字段時要先將就的Default or DEFAULT constraint先刪除才? 當然在修改完字段時要重徏?
Select Name From SysObjects Where xType = 'D'
       and Parent_Obj = (Select id From SysObjects Where Name = '表名')
*/

E序代碼如下:
/*
    此程序沒有考慮字段的默認?BR>*/
-- xtype = '167' 字段型?varchar 可用 select * from systypes 查看
Declare  curAlterInfo Cursor For Select a.Name AlterFieldName, a.Length, a.IsNullable, b.Name AlterTableName
                                                    From SysColumns a, SysObjects b Where a.id = b.id and a.xType = '167'
                                                    and b.xType = 'u' and a.cdefault = 0
declare @AlterFieldName nvarchar(50),  -- 修改的字D?BR>            @AlterTableName nvarchar(50),  -- 修改的表?BR>            @Length int, -- 字段以長?BR>            @IsNullable bit, -- 字段是否允許為空
            @PkName nvarchar(50), -- 主鍵?BR>            @PkFieldName nvarchar(500), --主鍵字段?BR>            @TmpFieldName nvarchar(50),
            @TmpTableName nvarchar(50),
            @Sql nvarchar(500)

Set NoCount On
Begin Tran
open curAlterInfo
Fetch curAlterInfo Into @AlterFieldName, @Length, @IsNullable, @AlterTableName
While @@Fetch_Status=0
Begin
    print @AlterTableName
    --檢查修改的表是否有主?BR>    If Exists(Select Name From SysObjects Where xType = 'PK'
                  and Parent_Obj = (Select id From SysObjects Where Name = @AlterTableName))
    Begin
       Set @TmpTableName = @AlterTableName
       -- 取得主鍵?BR>       Select @PkName = Name From SysObjects Where xType = 'PK'
                 and Parent_Obj = (Select id From SysObjects Where Name = @AlterTableName)
       Set @PkFieldName = ''
       -- 主鍵字段
       Declare curPkFieldName Cursor For Select b.Name From SysIndexKeys a, SysColumns b
                                                Where a.id = (Select id From SysIndexes Where Name = @PkName)
                                                and a.indid = 1 and a.colid = b.colid and a.id = b.id
       -- 取得所有的主鍵字段
       Open curPkFieldName
       Fetch curPkFieldName Into @TmpFieldName
       While @@fetch_status = 0
       Begin
           Set @PkFieldName = @PkFieldName + @TmpFieldName + ','
           Fetch curPkFieldName Into @TmpFieldName
       End
       Close curPkFieldName
       Deallocate curPkFieldName
       -- 刪除舊主?BR>       Set @Sql = 'ALTER TABLE '+ @AlterTableName + ' DROP CONSTRAINT ' + @PkName
       Print @Sql
       Exec(@Sql)   
    end
    -- 修改字段
    Set @Sql = 'ALTER TABLE ' + @AlterTableName + ' ALTER COLUMN ' + @AlterFieldName
                   + ' NVARCHAR( ' + CAST(@Length AS NVARCHAR) + ')'
    -- 是否允許為空
    if @IsNullable = 0
        Set @Sql = @Sql + ' NOT NULL'
    Print @sql
    Exec(@sql)
    Fetch curAlterInfo Into @AlterFieldName, @Length, @IsNullable, @AlterTableName
    -- 創徏主鍵
    If (@AlterTableName <> @TmpTableName or @@fetch_status <> 0) and @PkFieldName <> ''
    Begin
         Set @PkFieldName = Left(@PkFieldName, Len(@PkFieldName) - 1)
         Set @Sql =  ' ALTER TABLE ' + @TmpTableName + ' ADD CONSTRAINT ' + @PkName
                        +  ' PRIMARY KEY CLUSTERED(' + @PkFieldName + ') ON [PRIMARY]'
         Print @Sql
         Exec(@Sql)
         print '-----------------------------'
         Set @PkFieldName = ''
    End
End
Close curAlterInfo
Deallocate curAlterInfo
If @@Error > 0
   Rollback Tran
Else
   Commit Tran
Set NoCount Off



konhon 优华 2005-08-03 14:36 发表评论
]]>
վ֩ģ壺 | ƽɽ| ƽ| ²| ǰ| ɽ| | | Դ| | | | ٹ| ɽ| ̨ǰ| | | | ľ| | Ů| | | ݳ| | | տ| | ij| | | | ɽ| | â| | | | Դ| | |