• 自动生成存储过程一


    昨天领导让我把所有对数据的操作放在数据库进行,需要用到很多的存储过程,一想到要写那么多的存储过程,脑袋就两个大,于是在网上查找相关资料,竟然能找到自动生成存储过程的代码,不错,借用过来还真的能省不少时间呢,下面的存储过程Sp_GenInsert就可以帮我生成插入数据的存储过程。

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

    生成
    sp_GenInsert存储过程代码:
    CREATE procedure sp_GenInsert
    @TableName 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 'INSERT INTO ' + @TableName,@maxcol + 2 as colorder
    union
    select '(',@maxcol + 3 as colorder
    union
    select 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 systypes.name <> 'sysname'
    union
    select ')',(2 * @maxcol) + 4 as colorder
    union
    select 'VALUES',(2 * @maxcol) + 5 as colorder
    union
    select '(',(2 * @maxcol) + 6 as colorder
    union
    select '@' + syscolumns.name
    + case when colorder < @maxcol then ','
    when colorder = @maxcol then ' '
    end
    as type,
    colorder + (2 * @maxcol + 6) as colorder
    from syscolumns
    join systypes on syscolumns.xtype = systypes.xtype
    where id = @TableID and systypes.name <> 'sysname'
    union
    select ')',(3 * @maxcol) + 7 as colorder
    order by colorder


    select type from #tempproc order by colorder

    drop table #tempproc

  • 相关阅读:
    tk资料
    jQuery 1.x和jQuery 2.x的最大区别
    活得更像一个人,我的十六年学习之路——北漂18年(44)
    java中的java.util.Map的实现类
    MVC框架的优缺点
    Web Service有关术语的解释
    Java中的字节输入出流和字符输入输出流
    对称加密算法
    怎么让这4个人在17分钟内要过桥
    mysql 只给更新表的某个字段的授权
  • 原文地址:https://www.cnblogs.com/yumianhu/p/3713005.html
Copyright © 2020-2023  润新知