数据库增删改查操作之通用存储过程
基于SqlServer!有点标题党,不过应该可以适用于一些普通的小项目。按实际需要再做相应修改吧~特别是字段的长度~
增加(insert into)
(Copy Code)--插入 CREATE PROCEDURE [dbo].[InsertMessage] @strTable varchar(50),--表名 @strValues varchar(5000)--要插入的数据(用英文逗号分隔),如果是字符串类型,需加单引号 as declare @sqlString varchar(5000); set @sqlString = 'insert into '+@strTable+' values ('+@strValues+')'; exec(@sqlString);
删除(delete from)
(Copy Code)--删除(delete from) CREATE PROCEDURE [dbo].[DeleteMessage] @strtable varchar(50),--要删除信息的表名 @strwhere varchar(300)--要删除信息的条件,不用加where,直接:列名=值;如果值是字符串,需加单引号 as declare @sqlString varchar(500); declare @whereString varchar(300); if @strwhere is null or rtrim(@strwhere)='' set @whereString=''; else set @whereString=' where '+@strwhere; set @sql= 'delete from '+@strtable+@whereString; exec(@sql);
查询(Select)
(Copy Code)--查询 CREATE PROCEDURE [dbo].[SelelctMessage] @strTable varchar(50),--要查询的表 @strColum varchar(500),--要查询的字段(*表示全部字段) @strWhere varchar(500)--查询的条件,不用加where,直接 列名=值。如果值是字符串,需加单引号 as declare @sqlString varchar(400); declare @whereString varchar(500); if @strwhere is null or rtrim(@strwhere)=''; set @whereString=''; else set @whereString=' where '+@strwhere; set @sqlString='select '+@strcolum+' from '+@strtable+@whereString; exec(@sqlString);
修改(update)
(Copy Code)CREATE PROCEDURE [dbo].[UpdateMessage] @strTable varchar(50),--要修改的表 @strColumn varchar(500),--要修改的列名(如果有多个,用英文逗号分隔) @strValue varchar(500),--新的值(用英文逗号分隔,如果是字符串,需加单引号) @strWhere varchar(500)--where条件,不加wehere,直接 列名=值,如果值是字符串,需加单引号 as --变量 declare @sqlString nvarchar(4000);--完整的update语句 declare @whereString varchar(500);--where条件 declare @tempString varchar(50);--update语句中间的赋值语句 declare @curr_Column int;--列名字符串的当前位置 declare @curr_Value int;--值字符串的当前位置 declare @prev int;--光标位置 --变量赋初值 set @sqlString = 'update '+@strTable+' set '; set @whereString = ' where '+@strWhere; set @tempString=''; set @curr_Column=1; set @prev=1; --开始循环处理 while @prev < len(@strColumn) begin set @curr_Column=charindex(',',@strColumn,@prev); set @curr_Value= charindex(',',@strValue,@prev); if @curr_Column>@prev set @tempString = substring(@strColumn,@prev,@curr_Column-@prev)+'='+substring(@strValue,@prev,@curr_Value-@prev)+',' +@tempString; else--最后一个 begin set @tempString =@tempString + substring(@strColumn,@prev,len(@strColumn)-@prev+1)+'='+substring(@strValue,@prev,len(@strValue)-@prev+1); break; end set @prev=@curr_Column+1; end set @sqlString = @sqlString+@tempString+@whereString; exec(@sqlString);
转载请注明本文链接。版权所有©2010 李佳龙专栏,保留所有权利。