CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

有关存储过程中使用动态SQL的疑问, 请大家赐教, 谢谢!

楼主gzchrishu(Chris)2004-12-02 23:12:25 在 MS-SQL Server / 基础类 提问

 
   
  --declare   @aa   varchar(200)  
  --select   @aa='select   *   from   member'  
  --exec(   @aa   )  
   
  --keyword   sp  
  drop   proc   sp_keyword_search;  
  go  
   
  create   proc   sp_keyword_search  
  @offset   int,  
  @pagesize   int=20, --默认每页20条记录  
  @whereclause   varchar(200)='1=1',   --   default   condiction  
  @orderclause   varchar(200)='b.LevelId   desc,   b.BusinessName   asc'   --   default   condiction  
  as  
  set   nocount   on  
   
  if   @offset<@pagesize  
  set   @offset=0  
   
  declare   @sql   varchar(300)  
  if   @offset=0  
  begin  
  set   rowcount   @pagesize  
  select   @sql='select   *   from   business   as   b   where   '   +   @whereclause+'   order   by   '+   @orderclause  
  exec   (@sql)  
  end  
  else  
  begin  
  declare   @i   int  
   
  set   @i=@offset+@pagesize  
  set   rowcount   @i  
  select   @sql='select   businessId   into   #t   from   business   as   b   where   '   +   @whereclause+'   order   by   '+   @orderclause  
  exec(   @sql)  
   
  set   @i=@offset  
  set   rowcount   @i  
  delete   from   #t  
   
  select   *   from   business   a  
  where   exists(  
  select   *   from   #t   where   businessId=a.businessid)  
  end  
  set   rowcount   0  
  go  
   
   
  调用   exec   prc_keyword_search   @offset=100;     出错  
  错误信息:  
  服务器:   消息   208,级别   16,状态   1,行   1  
  对象名   '#t'   无效。  
  服务器:   消息   208,级别   16,状态   1,过程   prc_keyword_search,行   40  
  对象名   '#t'   无效。  
   
   
   
  是什么原因?难道SP中的动态SQL不可以使用临时表吗? 问题点数:0、回复次数:5Top

1 楼guanshiyu123(就欺负你..宝)回复于 2004-12-02 23:22:15 得分 0

临时表的这种情况我倒是不知道,  
  不过你的需求可以用物理表来完成啊,把#t换成一个物理表,例如ttt,用完了之后,判断ttt是否存在,存在就删除它,就可以了,只是代价大点,Top

2 楼gzchrishu(Chris)回复于 2004-12-02 23:37:56 得分 0

哦,   我写错了,   我调用的时候是执行:  
  exec   sp_keyword_search   @offset=100;      
   
     
  TO:   guanshiyu123(老关)    
  我这个情况不能用物理表,   因为这是一个数据分页的SQL  
  Top

3 楼mastersky(浪)回复于 2004-12-03 00:02:52 得分 0

服务器:   消息   208,级别   16,状态   1,行   1  
  对象名   'business'   无效。  
  服务器:   消息   208,级别   16,状态   1,过程   sp_keyword_search,行   30  
  对象名   '#t'   无效。  
  Top

4 楼passionke(每一步都改变未来,却只能有一种结局!)回复于 2004-12-03 00:06:06 得分 0

先建立临时表,在用insert插入数据Top

5 楼gzchrishu(Chris)回复于 2004-12-03 15:57:41 得分 0

先建立临时表,在用insert插入数据  
   
   
   
  这样的话表的数据有可能给其他的用户访问的到,也不可行哦Top

相关问题

  • 存储过程中动态sql问题
  • oracle存储过程中的动态sql
  • 在存储过程中如何动态形成SQL语句?
  • oracle存储过程中动态SQL Insert Into 的问题
  • 如何在oracle存储过程中执行动态sql语句???
  • sybase存储过程中如何使用动态sql?
  • 如何在存储过程中写动态SQL
  • 紧急求助:ORACLE存储过程中动态SQL
  • 存储过程中,动态sql创建view的问题
  • 如何在存储过程中写动态SQL

关键词

  • search
  • keyword
  • aa
  • varchar
  • proc sp
  • offset
  • default
  • select

得分解答快速导航

  • 帖主:gzchrishu

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo