当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 像如下代码哪里出错了,为什么一调用存储过程就显示不出数据了,ggjj们帮忙看下,指出下错误所在,或能给个真确的就更好了,谢谢! <meta http-equiv="content-type" content="text/html; charset=gb2312"> <%@ page contenttype="text/ht......
    摘要: 除了把winnt/system32下的timedate.cpl文件改名外还有没有其他好的方法? 总觉的把timedate.cpl改名不保险 ......


存储过程里怎么用等于号匹配变量值为空的情况。。。

ASP前台搜索页面有两个输入框,一个是文本型company,一个是数字型mytype,两者都可为空,    
  存储过程如下  
  CREATE   procedure   Search  
  @Company   varchar(100),  
  @mytype   int  
  as  
  select   *   from   [job]  
  where  
          company   like   %+@company+%  
          and   mytype=@mytype    
  order   by   id   desc  
  GO  
   
  如果只有  
  company   like   +%+isnull(@company,company)+%  
  这样的话,前台页面不输入关键字,可以找出所有信息,再加上一句  
  and   mytype   =   +isnull(@mytype,mytype)   ,如果前台mytype不填写为空的话,理论上要客户可以找到所有类别的数据记录,但实际无法找到任何数据,如果前台填写mytype的值,才可以找到表joblist里mytype字段=输入值的记录,现在想问,这种变量可为空且要判断变量等于的情况,以我上面的代码为例,要怎么写?谢谢大家!!!

NO.1   作者: ghaihua

--不是这样写吧?!!  
  --我帮你改了下,你试试  
   
  CREATE   procedure   Search  
  @Company   varchar(100),  
  @mytype   int  
  as  
   
  Declare   @SQL   varchar(255)  
   
  Set   @SQL   =   select   *   from   [job]   where   company   like   %+isnull(@company,)+%  
   
  if   @mytype   is   not   Null   or   @mytype<>   Begin  
  Set   @SQL   =   @SQL   +     and   mytype=+cast(@mytype   as   varchar)  
  end  
   
  Set   @SQL   =   @SQL   +     order   by   id   desc  
   
  Execute   @SQL  
  GO  
 

NO.2   作者: x1234521

其实问题很简单,  
  不应该是你这样的思路,你可以在前台程序中做SQL语句连接,判断,而在存储过程中不要做无谓的判断,  
  比如这样  
  ASP中:(简写)  
  dim   sql   as   string  
  sql   =   "select   *   from   job"  
  if   Company   <>""   then  
        sql   =   sql   &   "   where   company   like   %"&company&"%"  
  end   if  
  if   mytype   <>""   then  
          这个你自己写下  
  end   if  
  sql   =   sql   &   "   order   by   id   desc"  
   
  这样给存储传值的时候就传一个变量SQL就可以了,然后在存储过程中执行查询,我感觉这样比较合理,  
  你的那种做法也是可以的,你只要把我上面的思路带到存储过程中就OK了~~  
  明白了吧!

NO.3   作者: rivery

CREATE   procedure   Search  
  @Company   varchar(100),  
  @mytype   int  
  as  
  select   *   from   [job]  
  where   company   like   %+@company+%  
          and   mytype=isnull(@mytype,mytype)   --如果传入null则查出所有的mytype  
  --and   mytype=(case   @mytype   when   0   then   mytype   else   @mytype   end)   --如果传入0则查出所有的mytype。  
  order   by   id   desc  
  GO


 ·如何對web.config進行讀寫操作    »显示摘要«
    摘要: 如何對web.config進行讀寫操作 web.config <appsettings> <add key="sitename" value="震興集團" /> </appsetting> 如何更改這個鍵值啊 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE