大家上午好!
   有一个综合查询页面,查件条件可由用户选择,并增加button:和(and) 、或(or),由用户决定查询条件。
现已用sql语句在页面中实现,但觉得速度有点慢想改用存储过程实现。SELECT WareCD,E_WareName ,  BuyUnit ... FROM dbo.WareInfo inner join FeeRateInfo On FeeRateInfo.CurrencyCD=WareInfo.CurrencyCD and FeeRateInfo.delflg='0'   inner join WareTypeInfo on   WareTypeInfo.WaretypeCD=Wareinfo.WareTypeCD and WareTypeInfo.Delflg='0'  WHERE WareInfo.Delflg ='0' and (seleparm)seleparm是从页面传过来的参数:形式如下:
 warecd='0210' or buyunit='个' 现改为存诸过程,试着传参数但没弄出来,总提示语法错误。
在此请教各位。

解决方案 »

  1.   

    Create Proc 存储过程名称
    @seleparm varchar(200)
    as
    declare @sele varchar(256)
    set @sele = "SELECT WareCD,E_WareName ,  BuyUnit ... FROM dbo.WareInfo inner join FeeRateInfo On FeeRateInfo.CurrencyCD=WareInfo.CurrencyCD and FeeRateInfo.delflg='0'  inner join WareTypeInfo on  WareTypeInfo.WaretypeCD=Wareinfo.WareTypeCD and WareTypeInfo.Delflg='0'  WHERE WareInfo.Delflg ='0' and "
    set @sele = @sele + @seleparm
    xp_ExcuteSql @sele
      

  2.   

    应该是SQL问题..SQL server 不太会,Oracle可以帮忙
      

  3.   

    不太明白,也还没弄出来.
    是这样的吗?CREATE PROCEDURE [dbo].[Query_WareInfo] 
    @seleparm  varchar(200),
    declare @sele varchar(256) 
    AS
    set @sele ="SELECT WareCD as '商品代码'FROM dbo.WareInfo ...
    WHERE WareInfo.Delflg = '0'   and "
    set @sele= @sele+@seleparm
    xp_ExcuteSql @sele不行,有很多语法错误
      

  4.   


    Create Proc 存储过程名称 
    @seleparm varchar(200) 
    as 
    declare @sele varchar(256) 
    set @sele = "SELECT WareCD,E_WareName ,  BuyUnit ... FROM dbo.WareInfo inner join FeeRateInfo On FeeRateInfo.CurrencyCD=WareInfo.CurrencyCD and FeeRateInfo.delflg='0'  inner join WareTypeInfo on  WareTypeInfo.WaretypeCD=Wareinfo.WareTypeCD and WareTypeInfo.Delflg='0'"
     + @seleparm
    exec sp_sqlexec @sele 
      

  5.   


    应该在'处使用''即可:
    CREATE PROCEDURE [dbo].[Query_WareInfo] 
    @seleparm  varchar(200), 
    declare @sele varchar(256) 
    AS 
    set @sele ="SELECT WareCD as ''商品代码'' FROM dbo.WareInfo ... 
    WHERE WareInfo.Delflg = ''0''  and " 
    set @sele= @sele+@seleparm 
    xp_ExcuteSql @sele 
      

  6.   

    Create Proc 存储过程名称 
    @seleparm varchar(200) 
    as 
    declare @sele varchar(256) 
    set @sele = 'SELECT WareCD,E_WareName ,  BuyUnit ... FROM dbo.WareInfo inner join FeeRateInfo On FeeRateInfo.CurrencyCD=WareInfo.CurrencyCD and FeeRateInfo.delflg=0  inner join WareTypeInfo on  WareTypeInfo.WaretypeCD=Wareinfo.WareTypeCD and WareTypeInfo.Delflg=0  WHERE WareInfo.Delflg =0 and ' 
    set @sele = @sele + @seleparm 
    exec (@sele)
      

  7.   

    SELECT WareCD,E_WareName ,  BuyUnit ... FROM dbo.WareInfo inner join FeeRateInfo On FeeRateInfo.CurrencyCD=WareInfo.CurrencyCD and FeeRateInfo.delflg='0'  inner join WareTypeInfo on  WareTypeInfo.WaretypeCD=Wareinfo.WareTypeCD and WareTypeInfo.Delflg='0'  WHERE WareInfo.Delflg ='0' and (seleparm) 
    以上你的SQL我借用楼上的东西,给你改改。那样比较简单
    Create Proc 存储过程名称 
    @warecd nvarchar(20)
    @buyunit nvarchar(20)
    as 
    SELECT WareCD,E_WareName ,  BuyUnit ... FROM dbo.WareInfo inner join FeeRateInfo On FeeRateInfo.CurrencyCD=WareInfo.CurrencyCD and FeeRateInfo.delflg='0'  inner join WareTypeInfo on  WareTypeInfo.WaretypeCD=Wareinfo.WareTypeCD and WareTypeInfo.Delflg='0'  WHERE WareInfo.Delflg ='0' and warecd=@warecd or buyunit =@buyunit 
    以上存储过程
    exec 存储过程名称 '0210' '个'
    以上在查询执行
      

  8.   

    谢谢,但warecd=@warecd or buyunit =@buyunit ...
    是不确定的,完全由用户决定.