• 自动生成存储过程一


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

  • 相关阅读:
    组播技术
    高阶函数
    《统计学习方法》第一章学习笔记
    R代码规范(转)
    数据挖掘与商业智慧:华通二十年专题----台湾辅仁大学谢邦昌教授访谈(转载)
    基于Hadoop的机器学习开源项目
    特征选择算法之开方检验(转载)
    朴素贝叶斯算法及不同特征值结果的比较
    走出数据挖掘的误区(转载)
    互联网时代的社会语言学:基于SNS的文本数据挖掘(转载)
  • 原文地址:https://www.cnblogs.com/yumianhu/p/3713005.html
Copyright © 2020-2023  润新知