• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

刷新SP到一数据库方便制作XSD文件_sqlserver

sqlserver 搞代码 7年前 (2018-06-16) 139次浏览 已收录 0个评论

———————————————————————————-
—        刷新SP到数据库         —
—                    —
— &Old& 来源数据库名               —
— &New& 目标数据库名               —

http://www.gaodaima.com/34630.html刷新SP到一数据库方便制作XSD文件_sqlserver

—                    —
— 目标数据库中表名为来源数据库中的用户自定义SP、FN等(可按提示添加–详细提示以后加) —
—    表中的列名则为其参数            —
—                    —
— 黄宗银                  —
— 2005.01.19                 —
———————————————————————————-
ALTER PROCEDURE dbo.P_Ref
AS
 DECLARE @SQL nvarchar(4000)

 — 不存在数据库则创建
 IF NOT EXISTS (
  SELECT [name]
  FROM master.dbo.sysdatabases
  WHERE [name] = ‘&New&’
  )
 BEGIN
  CREATE DATABASE &New&
 END

 — 取出SP、FN、TF其name、id
 DECLARE @Tbl CURSOR
 SET  @Tbl = CURSOR LOCAL SCROLL FOR
 SELECT [name], [id]
 FROM &Old&.dbo.sysobjects
  — 要增加刷新类型请修改这里
 WHERE ([name] LIKE ‘P%’ OR [name] LIKE ‘F%’ OR [name] LIKE ‘TF%’)
  AND (type = ‘P’ OR type = ‘FN’ OR type = ‘TF’ )

 DECLARE @TblName nvarchar(100)
 DECLARE @TblID  int

 — 以@TblName为名创建表
 OPEN @Tbl
 FETCH NEXT FROM @Tbl INTO @TblName, @TblID
 WHILE( @@FETCH_STATUS = 0 )
 BEGIN
  — 已存在该表则删除
  IF EXISTS
   (
    SELECT [name] FROM &New&.dbo.sysobjects
    WHERE [name] = @TblName
     AND type = ‘U’
   )
  BEGIN
   SET @SQL = ‘DROP TABLE ‘ + ‘&New&’ + ‘.dbo.’ + @TblName
   EXEC SP_ExecuteSQL @SQL
   IF( @@ERROR <> 0 )
   BEGIN
    RAISERROR( ‘删除已存在的表%s失败!’, 11, 1, @TblName )
    RETURN
   END
  END

  — 如果没有参数则跳过
  IF( (SELECT Count(*) FROM dbo.syscolumns WHERE [name] LIKE ‘@%’ AND [id] = @TblID) = 0 )
  BEGIN
   FETCH NEXT FROM @Tbl INTO @TblName, @TblID
   CONTINUE
  END

  — 取出列名及其类型
  DECLARE @Col CURSOR
  SET  @Col = CURSOR LOCAL SCROLL FOR
  SELECT &Old&.dbo.syscolumns.[name], &Old&.dbo.systypes.[name]
  FROM &Old&.dbo.syscolumns LEFT OUTER JOIN
    &Old&.dbo.systypes ON &Old&.dbo.syscolumns.xtype = &Old&.dbo.systypes.xtype
  WHERE &Old&.dbo.syscolumns.[name] LIKE ‘@%’
   AND &Old&.dbo.syscolumns.[id] = @TblID
  ORDER BY &Old&.dbo.syscolumns.colorder

  DECLARE @ColName nvarchar(50)
  DECLARE @ColType nvarchar(20)

  — 构造SQL语句
  SET @SQL = ‘CREATE TABLE &New&.dbo.’ + @TblName + ‘(‘
  OPEN @Col
  FETCH NEXT FROM @Col INTO @ColName, @ColType
  DECLARE @ColNameLast nvarchar(50)
  SET  @ColNameLast = ”
  WHILE( @@FETCH_STATUS = 0 )
  BEGIN
   SET @ColName = SubString( @ColName, 2, Len( @ColName )-1 )
   — 跳过重复的列
   IF( @ColName <> @ColNameLast )
   BEGIN
    SET @SQL = @SQL + @ColName + ‘ ‘ + @ColType + ‘,’
    SET @ColNameLast = @ColName
   END
   FETCH NEXT FROM @Col INTO @ColName, @ColType
  END
  SET @SQL = SubString( @SQL, 1, Len( @SQL )-1 )
  SET @SQL = @SQL + ‘)’

  — 执行SQL语句
  EXEC SP_ExecuteSQL @SQL
  IF( @@ERROR <> 0 )
  BEGIN
   RAISERROR( ‘创建表%s失败!’, 11, 1, @TblName )
   RETURN
  END

  — 创建下一个表
  FETCH NEXT FROM @Tbl INTO @TblName, @TblID
 END

RETURN @@ERROR

欢迎大家阅读《刷新SP到一数据库方便制作XSD文件_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:刷新SP到一数据库方便制作XSD文件_sqlserver

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址