sql生成(插入、修改、删除数据的存储过程)代码的存储过程

GO
/****** 对象:  StoredProcedure [dbo].[pro_GenerateProSet]    脚本日期: 08/03/2012 11:26:43 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pro_GenerateProSet]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[pro_GenerateProSet]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************************************************
** DECRIPTION: 生成(插入、修改、删除数据的存储过程)代码的存储过程
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/03/2012							新建程序
** --------  ------------  ------------  -----------------   -------------------------------
*******************************************************/
create procedure [dbo].[pro_GenerateProSet](
					@TbName NVARCHAR(200) ---表名
)
as
begin
DECLARE @TableName     NVARCHAR(200)  --表名
DECLARE @Parameters     VARCHAR(8000)  --所有参数
DECLARE @UpdateFields     VARCHAR(8000) --更新参数(无主键和唯一键)
DECLARE @InsertFields     VARCHAR(8000) --插入列(无唯一键)
DECLARE @InsertParams     VARCHAR(8000) --插入参数(无唯一键)
DECLARE @PrimaryKey     NVARCHAR(200)  --主键
DECLARE @UniqueColumn     NVARCHAR(200)  --唯一键

SELECT @TableName = @TbName,@Parameters = '', @UpdateFields = '',@InsertParams='',@InsertFields='',@UniqueColumn=''

if isnull(@TableName,'')=''
begin
	print '表名不能为空!'
	return 0
end
----找表的主键
SELECT @PrimaryKey =  [dbo].[fun_get_PrimaryKey](@TableName)

if isnull(@PrimaryKey,'')=''
begin
	print '没有找到表主键!'
	set @PrimaryKey=''
	return 0
end 

select @UniqueColumn = [dbo].[fun_get_unique_column](@TableName)

----输出存储过程名
PRINT 'CREATE PROCEDURE dbo.pro_set_'+dbo.fun_get_UpperFirst(@tablename)+'('
PRINT dbo.fun_get_tabspace(1)+'@opr_typ int , ---- 1:新增 2: 修改 3:删除'

----全部参数
SELECT @Parameters = @Parameters + dbo.fun_get_tabspace(1)+'@'+COLUMN_NAME+' '+
        DATA_TYPE+dbo.fun_get_column_length(@TableName,COLUMN_NAME)
+','+CHAR(10)   ---- CHAR(10)就是一个换行符
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName --AND COLUMN_NAME != @PrimaryKey

set @Parameters=LEFT(@Parameters,LEN(@Parameters)-2) ----去掉最后一个 ‘,’ 和 换行符

---插入参数
SELECT @InsertParams = @InsertParams + dbo.fun_get_tabspace(3)+'@'+COLUMN_NAME+' '+','+CHAR(10) -- CHAR(10)为换行符
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TableName AND COLUMN_NAME != @UniqueColumn

set @InsertParams=LEFT(@InsertParams,LEN(@InsertParams)-2) ----去掉最后一个 ‘,’ 和 换行符
set @InsertFields=Replace(@InsertParams,'@','')

PRINT @Parameters
PRINT ')'
PRINT 'AS'
PRINT 'BEGIN'
	print dbo.fun_get_tabspace(1)+'if @opr_typ=1  ---新增'
		print dbo.fun_get_tabspace(2)+'begin'
		print dbo.fun_get_tabspace(2)+'INSERT INTO ' + @TableName+'('
		print @InsertFields
		print dbo.fun_get_tabspace(3)+')'
		print dbo.fun_get_tabspace(2)+'VALUES('
		print @InsertParams
		print dbo.fun_get_tabspace(3)+')'
		print dbo.fun_get_tabspace(3)+'select  SCOPE_IDENTITY() as autocolumn'
		print dbo.fun_get_tabspace(2)+'end'
	print dbo.fun_get_tabspace(1)+'else'
	print dbo.fun_get_tabspace(1)+'if @opr_typ=2  ---修改'
		print dbo.fun_get_tabspace(2)+'begin'
		PRINT dbo.fun_get_tabspace(2)+'UPDATE ' + @TableName
		PRINT dbo.fun_get_tabspace(2)+'SET'

		SELECT @UpdateFields = @UpdateFields +dbo.fun_get_tabspace(3)+COLUMN_NAME +' = @'+ COLUMN_NAME +','+ CHAR(10)
		FROM INFORMATION_SCHEMA.COLUMNS
		WHERE TABLE_NAME = @TableName AND COLUMN_NAME != @PrimaryKey and COLUMN_NAME !=@UniqueColumn

		PRINT LEFT(@UpdateFields,LEN(@UpdateFields) -2)
		PRINT dbo.fun_get_tabspace(2)+'WHERE'
		PRINT dbo.fun_get_tabspace(3)+ @PrimaryKey +' = @' + @PrimaryKey
		print dbo.fun_get_tabspace(1)+'end'
	print dbo.fun_get_tabspace(1)+'else'
	print dbo.fun_get_tabspace(1)+'if @opr_typ=3  ---根据主键删除'
		print dbo.fun_get_tabspace(2)+'begin'
print dbo.fun_get_tabspace(2)+'DELETE FROM ' + @TableName
print dbo.fun_get_tabspace(3)+'where '
 PRINT dbo.fun_get_tabspace(3)+ @PrimaryKey +' = @' + @PrimaryKey
		print dbo.fun_get_tabspace(2)+'end'
PRINT 'END'
end
/*

exec pro_GenerateProSet 'stuinfo'

select * from INFORMATION_SCHEMA.COLUMNS where table_name='stuinfo'

fn_Trace_Gettable
*/
时间: 2024-12-23 00:34:11

sql生成(插入、修改、删除数据的存储过程)代码的存储过程的相关文章

sql生成(c#调用存储过程返回数据表)代码的存储过程

GO /****** 对象: StoredProcedure [dbo].[pro_GenerateServiceFunction] 脚本日期: 08/04/2012 11:26:43 ******/ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pro_GenerateServiceFunction]') AND type in (N'P', N'PC')) DROP PROCEDURE [d

php 删除数据键值代码

php 删除数据键值代码 /**   * 删除key为指定的key里的值   * @param array $array 操作的数组   * @param string $key 键值可以是数组   * @return void   */  public static function delete(&$array, $key) {   if (!is_array($key)) {    $key = array($key);   }   foreach ($key as $k) {    un

Java插入修改删除数据库数据的基本方法_java

Java数据库之插入记录 插入数据表记录有3种方案 一.使用Statement对象 实现插入数据表记录的SQL语句的语法是: insert into 表名(字段名1,字段名2,--)value (字段值1,字段值2,--) 例如:   insert into ksInfo(考号,姓名,成绩,地址,简历)value('200701','张大卫'534,'上海欧阳路218弄4-1202','') 实现同样功能的Java程序代码是: sql = "insert intoksIno(考号,姓名,成绩,地

h2 删数据 sql优化-h2数据库删除数据速度问题

问题描述 h2数据库删除数据速度问题 想删除h2数据库中某个表部分数据,但该表中有八千万左右数据,如何删除符合要求的一小部分数据呢?比如删除name以abc开头的数据,因为h2数据库我是通过web打开查看的,普通的Sql语句要执行很长很长时间,而且经常报内存不足,各位大神有没有什么优化的方法???求指点呀 解决方案 http://www.lc365.net/blog/b/32424/ 解决方案二: 因为没分了,不过谢谢能回答,对我其他的一些地方有帮助

亲密接触ASP.Net(10) 增加修改删除数据

接上一节,我们这一节主要计论如何使用DataSet,在数据库中增加.修改.删除一个数据. 首先我们需要打开一个联结,我们的数据库还是用上一节的吧:) string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;";string strComm = "select * from UserList";ADOConnection MyConnection = n

sql2000 执行sql语句插入一条数据完整语句怎么写

问题描述 我想写一个聊天室机器人,定时自动执行sql语句向数据库Room_List表插入一条数据.按这个插入语句:insertinto表名(字段1,字段2)values('内容1','内容2')进行插入INSERTINTO[Room_List](UserID,Sid,UserNick,Text,AddTime)VALUES("76368","0","测试会员","我是新手,请多关照","2016-6-523:59:3

MS SQL基础教程:删除数据

11.2.1 DELETE 语法 DELETE 语句用来从表中删除数据,其语法为: 各参数说明如下: FROM 此参数为可选选项,用于连接DELETE 关键字和要删除数据的对象名称. table_name 指定要删除数据的表. WITH ( [...n]) 指定一个或多个目标表允许的表提示. view_name 指定用于删除数据的视图. rowset_function_limited 行集合函数限制,即使用OPENQUERY() 或OPENROWSET() 函数. FROM 指定一个额外的FRO

Python修改Excel数据的实例代码_python

在前面的文章中介绍了如何用Python读写Excel数据,今天再介绍一下如何用Python修改Excel数据.需要用到xlutils模块.下载地址为https://pypi.python.org/pypi/xlutils.下载后执行python setup.py install命令进行安装即可.具体使用代码如下: 复制代码 代码如下: #-*-coding:utf-8-*-from xlutils.copy import copy    # http://pypi.python.org/pypi

关于jsp页面中修改删除数据问题

问题描述 根据一个条件在一个页面中查询出n条数据,每条记录后面都跟着修改和删除按钮,如何点击修改或者删除按钮,就直接链接到修改这条数据的页面或者删除选中数据?尽量使用页面代码的方法,尽量不要使用JavaBean实现.主要是如何定位的问题? 解决方案 解决方案二:你可以先查询出来显示在页面上,依次循环,然后在每条数据后面跟上方法删除可以用一张页面专门处理删掉,可以用动态删除,也可以做到无刷新删除这个就要看你自己想怎么实现了查看的话,可以把ID传过去,查询,显示,如何定位,表单是最简单的解决方案三:

mysql中创建修改删除数据表例子

在PHP中应用数据库时,通常是先在MySQL客户机的控制台中,使用DDL语句创建网站中的数据库.数据表及修改表结构等操作以后,再在PHP脚本中应用.很少直接在PHP中执行DDL语句动态创建数据库.数据表或修改表的操作,通常也只有在制作安装版本的网站时才会这么做. 1.创建表(CREATE TABLE) 数据库创建以后,使用use命令选定这个新创建的数据库作为默认(当前)数据库使用,就可以继续建立其包含的数据表.数据表的创建是使用表的前提,创建数据表主要是定义数据表的结构,包括数据表的名称.字段名