sql生成(c#调用存储过程返回数据表)代码的存储过程
2012-08-05 19:00
786 查看
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 [dbo].[pro_GenerateServiceFunction] SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /***************************************************** ** DECRIPTION: 生成(c#调用存储过程返回数据表)代码的存储过程 ** VERSION AUTH DATE Defect No DESC ** -------- ------------ ------------ ----------------- ------------------------------ ** V000.0.1 pukuimin 08/04/2012 新建程序 ** -------- ------------ ------------ ----------------- ------------------------------- *******************************************************/ CREATE procedure [dbo].[pro_GenerateServiceFunction]( @ProName NVARCHAR(200), ---存储过程名 @TableName NVARCHAR(200) ---表名 ) as begin DECLARE @SqlParams VARCHAR(8000) --生成存储过程参数 DECLARE @ParamValue VARCHAR(8000) --参数赋值 declare @tempProperty varchar(200)--临时字段 declare @DATA_TYPE varchar(200)--临时数据类型 declare @ParamCount int --参数计数器 declare @opr_typstr varchar(20) -- SELECT @SqlParams='',@tempProperty='',@DATA_TYPE='',@ParamCount=0,@ParamValue='',@opr_typstr='' if isnull(@ProName,'')='' or isnull(@TableName,'')='' begin print '存储过程名或表名不能为空!' return 0 end if exists (select * from sys.all_parameters where object_id = object_id(@ProName)) begin select @opr_typstr=case when [name]='@opr_typ' and @opr_typstr='' then 'int Opr_typ ,' else @opr_typstr end, @DATA_TYPE=type_name(user_type_id), --sql类型 @tempProperty=dbo.fun_get_UpperFirst(replace([name],'@','')), --参数 @SqlParams=@SqlParams+dbo.fun_get_tabspace(3)+'new SqlParameter("'+[name]+'",'+ (CASE WHEN @DATA_TYPE='NVARCHAR' OR @DATA_TYPE='VARCHAR' OR @DATA_TYPE='CHAR'OR @DATA_TYPE='NCHAR' or @DATA_TYPE='numeric' THEN dbo.[fun_get_cssqlpdt_by_sqldt](@DATA_TYPE)+',' +dbo.[fun_get_param_length](@ProName,[name]) ELSE dbo.[fun_get_cssqlpdt_by_sqldt](@DATA_TYPE) END)+'),'+CHAR(10), @ParamValue=@ParamValue+dbo.fun_get_tabspace(3)+ (CASE when [name]='@opr_typ' then 'paras['+cast(@ParamCount as varchar(20))+'].Value = '+@tempProperty+';' WHEN @DATA_TYPE='NVARCHAR' OR @DATA_TYPE='VARCHAR' OR @DATA_TYPE='CHAR' OR @DATA_TYPE='NCHAR' OR @DATA_TYPE='NTEXT' OR @DATA_TYPE='TEXT' OR @DATA_TYPE='OUT' or @DATA_TYPE='uniqueidentifier' or @DATA_TYPE='image' or @DATA_TYPE='variant' THEN 'paras['+cast(@ParamCount as varchar(20))+'].Value = model.'+@tempProperty+';' ELSE 'if (model.'+@tempProperty+'.Equals('+dbo.[fun_get_cssdt_by_sqldt](@DATA_TYPE)+'.MinValue))'+ CHAR(10)+dbo.fun_get_tabspace(3)+'{'+ CHAR(10)+dbo.fun_get_tabspace(4)+'paras['+cast(@ParamCount as varchar(20))+'].Value = null;'+ CHAR(10)+dbo.fun_get_tabspace(3)+'}'+ CHAR(10)+dbo.fun_get_tabspace(3)+'else'+ CHAR(10)+dbo.fun_get_tabspace(3)+'{'+ CHAR(10)+dbo.fun_get_tabspace(4)+'paras['+cast(@ParamCount as varchar(20))+'].Value = model.'+@tempProperty+';'+ CHAR(10)+dbo.fun_get_tabspace(3)+'}' END)+CHAR(10), @ParamCount=@ParamCount+1 from sys.all_parameters where object_id = object_id(@ProName) set @SqlParams=LEFT(@SqlParams,LEN(@SqlParams)-2) set @ParamValue=LEFT(@ParamValue,LEN(@ParamValue)-1) end else begin print '没有此存储过程!' return 0 end print dbo.fun_get_tabspace(2)+'#region 执行存储过程'+@ProName+'的函数' print dbo.fun_get_tabspace(2)+'/// <summary>' print dbo.fun_get_tabspace(2)+'/// 执行存储过程'+@ProName print dbo.fun_get_tabspace(2)+'/// <summary>' if @opr_typstr <>'' begin print dbo.fun_get_tabspace(2)+'/// <param name="Opr_typ"> 操作类型,1:新增 2:修改,3 删除 </param>' end print dbo.fun_get_tabspace(2)+'/// <param name="model">'+@TableName+'对应的model对象 </param>' print dbo.fun_get_tabspace(2)+'public object Run'+@ProName+'('+@opr_typstr+@TableName+'Model model)' -- print dbo.fun_get_tabspace(2)+'{' print dbo.fun_get_tabspace(3)+'object result=new object();' print dbo.fun_get_tabspace(3)+'SqlParameter[] paras = new SqlParameter[]' print dbo.fun_get_tabspace(3)+'{' print @SqlParams print dbo.fun_get_tabspace(3)+'};' print @ParamValue print dbo.fun_get_tabspace(3)+'try' print dbo.fun_get_tabspace(3)+'{' print dbo.fun_get_tabspace(4)+'result = new DbHelper().ExecProDataTable("'+@ProName+'", paras);' print dbo.fun_get_tabspace(4)+'' print dbo.fun_get_tabspace(3)+'}' print dbo.fun_get_tabspace(3)+'catch (SqlException ex)' print dbo.fun_get_tabspace(3)+'{' print dbo.fun_get_tabspace(4)+'result = null;' print dbo.fun_get_tabspace(4)+'throw new Exception("数据库操作异常", ex);' print dbo.fun_get_tabspace(3)+'}' print dbo.fun_get_tabspace(3)+'return result;' print dbo.fun_get_tabspace(2)+'}' print dbo.fun_get_tabspace(2)+'#endregion' end /* exec [pro_GenerateServiceFunction] 'pro_get_Stuinfo','stuinfo' */
相关文章推荐
- C#中的类SqlCommand对象使用方法ExecuteNonQuery()调用SQLServer存储过程时,存储过程执行成功,数据发生改变,但是返回-1
- sql 存储过程 几个 简单例子,及在asp.net(C#)中调用存储过程的代码
- 基于C#中的类SqlCommand对象调用SQLServer存储过程时,存储过程执行成功,但是对象方法ExecuteNonQuery()返回-1
- C#调用SQL存储过程以及返回值和参数的获取
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- C#调用SQL中的存储过程中有output参数,存储过程执行过程中返回信息
- [SQL]向3个表插入数据的存储过程 和 C# 代码
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- sql生成(插入、修改、删除数据的存储过程)代码的存储过程
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- sql生成(查询数据的存储过程)代码的存储过程
- SQL存储过程中调用存储过程返回的表
- 在C#中用最简洁有效的代码执行存储过程并返回数据
- 存储过程有输出参数,在c#中用nhibernate调用存储过程时,如何才能获取到一个结果集和这个输出参数呢?
- 在C#如何调用存储过程中返回多个值
- IQ存储过程中执行有结果集返回的动态SQL的调用方法
- 在一个存储过程中调用返回一个游标的另一个存储过程
- 编写存储过程,并且使用java代码调用存储过程的简单例子