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

简介: GO /****** 对象: StoredProcedure [dbo].[pro_GenerateServiceFunction] 脚本日期: 08/04/2012 11:26:43 ******/ IF EXISTS (SELECT * FROM sys.
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'


*/

相关文章
|
7天前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
|
3天前
|
SQL 安全 数据库
基于SQL Server事务日志的数据库恢复技术及实战代码详解
基于事务日志的数据库恢复技术是SQL Server中一个非常强大的功能,它能够帮助数据库管理员在数据丢失或损坏的情况下,有效地恢复数据。通过定期备份数据库和事务日志,并在需要时按照正确的步骤恢复,可以最大限度地减少数据丢失的风险。需要注意的是,恢复数据是一个需要谨慎操作的过程,建议在执行恢复操作之前,详细了解相关的操作步骤和注意事项,以确保数据的安全和完整。
9 0
|
7天前
|
数据安全/隐私保护 C# UED
利用 Xamarin 开展企业级移动应用开发:从用户登录到客户管理,全面演示C#与Xamarin.Forms构建跨平台CRM应用的实战技巧与代码示例
【8月更文挑战第31天】利用 Xamarin 进行企业级移动应用开发能显著提升效率并确保高质量和高性能。Xamarin 的跨平台特性使得开发者可以通过单一的 C# 代码库构建 iOS、Android 和 Windows 应用,帮助企业快速推出产品并保持一致的用户体验。本文通过一个简单的 CRM 示例应用演示 Xamarin 的使用方法,并提供了具体的代码示例。该应用包括用户登录、客户列表显示和添加新客户等功能。此外,还介绍了如何增强应用的安全性、数据持久化、性能优化及可扩展性,从而构建出功能全面且体验良好的移动应用。
15 0
|
7天前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
16 0
|
7天前
|
存储 SQL 数据库
如何使用 SQL Server 创建存储过程?
【8月更文挑战第31天】
38 0
|
7天前
|
SQL 数据库 索引
SQL 编程最佳实践简直太牛啦!带你编写高效又可维护的 SQL 代码,轻松应对数据库挑战!
【8月更文挑战第31天】在SQL编程中,高效与可维护的代码至关重要,不仅能提升数据库性能,还降低维护成本。本文通过案例分析探讨SQL最佳实践:避免全表扫描,利用索引加速查询;合理使用JOIN,避免性能问题;避免使用`SELECT *`,减少不必要的数据传输;使用`COMMIT`和`ROLLBACK`确保事务一致性;添加注释提高代码可读性。遵循这些实践,不仅提升性能,还便于后期维护和扩展。应根据具体情况选择合适方法并持续优化SQL代码。
15 0
|
13天前
|
SQL Java 数据库连接
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
|
19天前
|
SQL DataWorks 大数据
DataWorks操作报错合集之SQL代码行数过长产生报错,该如何解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
20天前
|
SQL 数据库
实时数仓 Hologres产品使用合集之如何找回之前的SQL查询代码
实时数仓Hologres是阿里云推出的一款高性能、实时分析的数据库服务,专为大数据分析和复杂查询场景设计。使用Hologres,企业能够打破传统数据仓库的延迟瓶颈,实现数据到决策的无缝衔接,加速业务创新和响应速度。以下是Hologres产品的一些典型使用场景合集。
|
23天前
|
物联网 C# Windows
看看如何使用 C# 代码让 MQTT 进行完美通信
看看如何使用 C# 代码让 MQTT 进行完美通信
175 0
下一篇
DDNS