如我写查询语句他生成
或有向导生成查询语句的软件谢谢

解决方案 »

  1.   

    这个可以自己写一个代码生成器来完成.(存储过程代码).就如同.net代码生成器一样.不过.它不能用模版替换的方式.所以写起来比较的麻烦.首先要考虑你对系统表的熟练程度. 我写过一个sql 2000 的存储过程生成器..
      

  2.   

    存储过程和sql基本上一样.
    就多了两个头个尾巴
    Create proc 存储过程名称
    参数 类型
    as
    begin
     set nocount on
      一段处理SQL的业务逻辑.
     set nocount off
    end
      

  3.   

    汗~!
    就多加一两行create procedure 就要找软件帮助?
      

  4.   

    无论是SQL Server还是Oracle都有存储过程向导,SQL Server中,在企业管理器中打开一个数据库后,点最上面工具栏上那个魔法棒图标就弹出向导窗口,点击“数据库”树节点,展开后下边就有“创建存储过程向导”,Oracle一段时间没接触了,现在机器上没有,忘了怎么显示向导了,不过也应该很容易找。
      

  5.   

    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+'| 联系方式:[email protected]'+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
    GOCREATE 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 
      

  6.   

    我写了一个生成存储过程的如果你用CodeSmith的话。我可以把模版发给你,生成简单的insert,update,delete,search几种存储过程,如果你想要生成比较复杂的你要自己写了,如果要得。你可以汇贴。我给你