zoukankan      html  css  js  c++  java
  • 自动生成存储过程二

    下面的存储过程sp_GenUpdate就可以帮我生成更新数据的存储过程。

    调用sp_GenUpdate存储过程的代码:
    sp_GenUpdate 'Employees', 'INS_Employees'

    生成
    sp_GenUpdate存储过程代码:
    CREATE procedure sp_GenUpdate
    @TableName varchar(130),
    @PrimaryKey varchar(130),
    @ProcedureName varchar(130)
    as
    set nocount on

    declare @maxcol int,
    @TableID int

    set @TableID = object_id(@TableName)

    select @MaxCol = max(colorder)
    from syscolumns
    where id = @TableID

    select 'Create Procedure ' + rtrim(@ProcedureName) as type,0 as colorder into #TempProc
    union
    select convert(char(35),'@' + syscolumns.name)
    + rtrim(systypes.name)
    + case when rtrim(systypes.name) in ('binary','char','nchar','nvarchar','varbinary','varchar') then '(' + rtrim(convert(char(4),syscolumns.length)) + ')'
    when rtrim(systypes.name) not in ('binary','char','nchar','nvarchar','varbinary','varchar') then ' '
    end
    + case when colorder < @maxcol then ','
    when colorder = @maxcol then ' '
    end
    as type,
    colorder
    from syscolumns
    join systypes on syscolumns.xtype = systypes.xtype
    where id = @TableID and systypes.name <> 'sysname'
    union
    select 'AS',@maxcol + 1 as colorder
    union
    select 'UPDATE ' + @TableName,@maxcol + 2 as colorder
    union
    select 'SET',@maxcol + 3 as colorder
    union
    select syscolumns.name + ' = @' + syscolumns.name
    + case when colorder < @maxcol then ','
    when colorder = @maxcol then ' '
    end
    as type,
    colorder + @maxcol + 3 as colorder
    from syscolumns
    join systypes on syscolumns.xtype = systypes.xtype
    where id = @TableID and syscolumns.name <> @PrimaryKey and systypes.name <> 'sysname'
    union
    select 'WHERE ' + @PrimaryKey + ' = @' + @PrimaryKey,(2 * @maxcol) + 4 as colorder
    order by colorder


    select type from #tempproc order by colorder

    drop table #tempproc

  • 相关阅读:
    关于在windows平台下将应用制作成windows服务及服务依赖的感想
    mysql 变量赋值的三种方法
    如何上传本地jar至远程仓库供其他项目使用
    maven的标准
    修改idea的缓存
    前端的网站
    读取简单的xml
    IDEA 自动设置compile target变成1.5
    注解导出优化版(推荐,十分强大)
    Linux命令干货!!!最常用的命令
  • 原文地址:https://www.cnblogs.com/yumianhu/p/3713004.html
Copyright © 2011-2022 走看看