|M| 现在学习存储过程 有没一个我写sql语写他生成存储过程的软件 谢谢

zyciis70 2007-01-14 08:56:26
如我写查询语句他生成
或有向导生成查询语句的软件

谢谢
...全文
250 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
HenanBoy 2007-01-15
  • 打赏
  • 举报
回复
我写了一个生成存储过程的如果你用CodeSmith的话。我可以把模版发给你,生成简单的insert,update,delete,search几种存储过程,如果你想要生成比较复杂的你要自己写了,如果要得。你可以汇贴。我给你
ybcaa 2007-01-15
  • 打赏
  • 举报
回复
还是自己写吧,这么简单的东西还想偷懒,还学什么习啊。
zlp321002 2007-01-14
  • 打赏
  • 举报
回复
sample:某一个表分页的存储过程生成器.

你可以学习下.

CREATE PROC #AutoGeneration_Query_P
@TABLENAME VARCHAR(50)
AS
BEGIN
DECLARE @HOST_NAME VARCHAR(200)
DECLARE @GET_DATE DATETIME
DECLARE @SQLROC VARCHAR(8000)
DECLARE @DESCRIPTION VARCHAR(4000)
DECLARE @ROWCOUNT INT
SELECT @SQLROC='',@DESCRIPTION='',
@HOST_NAME=HOST_NAME(),@GET_DATE=GETDATE()
SET @SQLROC=@SQLROC+'IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE ID=OBJECT_ID(''SP_'+@TABLENAME+'_Query'') AND XTYPE IN (N''P''))'+CHAR(10)
SET @SQLROC=@SQLROC+SPACE(5)+'DROP PROC SP_'+@TABLENAME+'_Query'+CHAR(10)
SET @SQLROC=@SQLROC+'GO '
SET @DESCRIPTION=@DESCRIPTION+'/*+--------------------------------------+'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 过程名称:SP_'+@TABLENAME+'_Query'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 功能说明:根据条件获取表'+@TABLENAME+'的记录的分页存储过程'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 入口参数:@SearchCondition,@OrderList,@PageSize,@PageIndex'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 过程返回:返回记录数'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 维护记录:Y/A'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 使用案例:SP_'+@TABLENAME+'_Query'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 工作站名:'+@HOST_NAME+''+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 联系方式:zlp321001@hotmail.com'+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'| 创建日期:'+CONVERT(VARCHAR(20),@GET_DATE,120)+''+CHAR(10)
SET @DESCRIPTION=@DESCRIPTION+'+--------------------------------------+*/'+CHAR(10)
SELECT @SQLROC=@SQLROC+CHAR(10)+@DESCRIPTION+'CREATE PROC SP_'+@TABLENAME+'_Query'
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@SearchCondition'+SPACE(20-LEN('@SearchCondition'))+'VARCHAR(2000), --查询条件'
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@OrderList'+SPACE(20-LEN('@OrderList'))+'VARCHAR(1000), --排序列表'
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@PageSize'+SPACE(20-LEN('@PageSize'))+'INT=10, --每页的大小'
SET @SQLROC=@SQLROC+CHAR(13)+CHAR(10)+SPACE(4)+'@PageIndex'+SPACE(20-LEN('@PageIndex'))+'INT --要显示的页码'
SET @SQLROC=@SQLROC+CHAR(10)+'AS'+CHAR(10)+'BEGIN'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(4)+'SET NOCOUNT ON'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'DECLARE @p1 int '
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'DECLARE @SQL VARCHAR(8000) '
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'DECLARE @PageCount INT'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')<>'''' AND ISNULL(@OrderList,'''')='''''
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM '+@TABLENAME+' WHERE ''+@SearchCondition+'' '' '
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')='''' AND ISNULL(@OrderList,'''')<>'''''
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM '+@TABLENAME+' ORDER BY ''+@OrderList+'' '' '
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')<>'''' AND ISNULL(@OrderList,'''')<>'''''
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM '+@TABLENAME+' WHERE ''+@SearchCondition+'' ORDER BY ''+@OrderList+'' '' '
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'IF ISNULL(@SearchCondition,'''')='''' AND ISNULL(@OrderList,'''')='''' '
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'BEGIN'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+' SET @SQL=''SELECT * FROM '+@TABLENAME+' '' '
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'END'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'--初始化分页游标'
SET @SQLROC=@SQLROC+CHAR(10)+SPACE(8)+'EXEC sp_cursoropen '+CHAR(10)
SET @SQLROC=@SQLROC+' @cursor=@p1 OUTPUT, '+CHAR(10)
SET @SQLROC=@SQLROC+' @stmt=@SQL,'+CHAR(10)
SET @SQLROC=@SQLROC+' @scrollopt=1,'+CHAR(10)
SET @SQLROC=@SQLROC+' @ccopt=1,'+CHAR(10)
SET @SQLROC=@SQLROC+' @rowcount=@PageCount OUTPUT'+CHAR(10)
SET @SQLROC=@SQLROC+' --计算总页数'+CHAR(10)
SET @SQLROC=@SQLROC+' IF ISNULL(@PageSize,0)<1 '+CHAR(10)
SET @SQLROC=@SQLROC+' SET @PageSize=10'+CHAR(10)
SET @SQLROC=@SQLROC+' SET @PageCount=(@PageCount+@PageSize-1)/@PageSize'+CHAR(10)
SET @SQLROC=@SQLROC+' IF ISNULL(@PageIndex,0)<1 OR ISNULL(@PageIndex,0)>@PageCount'+CHAR(10)
SET @SQLROC=@SQLROC+' SET @PageIndex=1'+CHAR(10)
SET @SQLROC=@SQLROC+' ELSE'+CHAR(10)
SET @SQLROC=@SQLROC+' SET @PageIndex=(@PageIndex-1)*@PageSize+1'+CHAR(10)
SET @SQLROC=@SQLROC+' --显示指定页的数据'+CHAR(10)
SET @SQLROC=@SQLROC+' EXEC sp_cursorfetch @p1,16,@PageIndex,@PageSize'+CHAR(10)
SET @SQLROC=@SQLROC+' --关闭分页游标'+CHAR(10)
SET @SQLROC=@SQLROC+' EXEC sp_cursorclose @p1'+CHAR(10)
SET @SQLROC=@SQLROC+SPACE(4)+'SET NOCOUNT OFF'
SET @SQLROC=@SQLROC+CHAR(10)+'END'
PRINT @SQLROC+CHAR(10)+'GO '
END
GO

CREATE PROC #SP_Generation_Query
@TABLENAMES VARCHAR(8000)
AS
BEGIN
DECLARE @I INT
DECLARE @TABLENAME VARCHAR(100)
SET @I=CHARINDEX(',',@TABLENAMES)
WHILE @I>0
BEGIN
SET @TABLENAME=LEFT(@TABLENAMES,@I-1)
EXEC #AutoGeneration_Query_P @TABLENAME
SET @TABLENAMES=RIGHT(@TABLENAMES,LEN(@TABLENAMES)-@I)
SET @I=CHARINDEX(',',@TABLENAMES)
END
IF LEN(@TABLENAMES)>0
BEGIN
EXEC #AutoGeneration_Query_P @TABLENAMES
END
END
GO

--测试
#SP_Generation_Query '表名'

drop proc #SP_Generation_Query
drop proc #AutoGeneration_Query_P
webdiyer 2007-01-14
  • 打赏
  • 举报
回复
无论是SQL Server还是Oracle都有存储过程向导,SQL Server中,在企业管理器中打开一个数据库后,点最上面工具栏上那个魔法棒图标就弹出向导窗口,点击“数据库”树节点,展开后下边就有“创建存储过程向导”,Oracle一段时间没接触了,现在机器上没有,忘了怎么显示向导了,不过也应该很容易找。
siugwan 2007-01-14
  • 打赏
  • 举报
回复
汗~!
就多加一两行create procedure 就要找软件帮助?
njrc 2007-01-14
  • 打赏
  • 举报
回复
找一个存储过程改改!
zyciis71 2007-01-14
  • 打赏
  • 举报
回复
可有一个总比自己写来的快啊
呵呵
zlp321002 2007-01-14
  • 打赏
  • 举报
回复
存储过程和sql基本上一样.
就多了两个头个尾巴
Create proc 存储过程名称
参数 类型
as
begin
set nocount on
一段处理SQL的业务逻辑.
set nocount off
end
zyciis71 2007-01-14
  • 打赏
  • 举报
回复
大哥我现在学习存储过程
所以很多都是不会写的
zlp321002 2007-01-14
  • 打赏
  • 举报
回复
这个可以自己写一个代码生成器来完成.(存储过程代码).

就如同.net代码生成器一样.不过.它不能用模版替换的方式.所以写起来比较的麻烦.首先要考虑

你对系统表的熟练程度. 我写过一个sql 2000 的存储过程生成器..
内容概要:本文介绍了一个基于MATLAB实现的无人机三维路径规划项目,采用蚁群算法(ACO)与多层感知机(MLP)相结合的混合模型(ACO-MLP)。该模型通过三维环境离散化建模,利用ACO进行全局路径搜索,并引入MLP对环境特征进行自适应学习与启发因子优化,实现路径的动态调整与多目标优化。项目解决了高维空间建模、动态障碍规避、局部最优陷阱、算法实时性及多目标权衡等关键技术难题,结合并行计算与参数自适应机制,提升了路径规划的智能性、安全性和工程适用性。文中提供了详细的模型架构、核心算法流程及MATLAB代码示例,涵盖空间建模、信息素更新、MLP训练与融合优化等关键步骤。; 适合人群:具备一定MATLAB编程基础,熟悉智能优化算法与神经网络的高校学生、科研人员及从事无人机路径规划相关工作的工程师;适合从事智能无人系统、自动驾驶、机器人导航等领域的研究人员; 使用场景及目标:①应用于复杂三维环境下的无人机路径规划,如城市物流、灾害救援、军事侦察等场景;②实现飞行安全、能耗优化、路径平滑与实时避障等多目标协同优化;③为智能无人系统的自主决策与环境适应能力提供算法支持; 阅读建议:此资源结合理论模型与MATLAB实践,建议读者在理解ACO与MLP基本原理的基础上,结合代码示例进行仿真调试,重点关注ACO-MLP融合机制、多目标优化函数设计及参数自适应策略的实现,以深入掌握混合智能算法在工程中的应用方法。

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧