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

請教,exists條件中的表名動態實現

楼主landlordh(work wonders)2004-12-04 11:41:20 在 MS-SQL Server / 应用实例 提问

一般情況下很少見到ys20041201中可以用動態參數  
   
  if   not   exists(   SELECT   *   FROM   ys20041201   where   timev>=   @val1       AND   timev<@val2       AND   p_no=@pno     )  
   
  ↓↓↓↓↓↓↓↓↓↓↓  
   
  declare   @tabname   nvarchar(15)  
  if   not   exists(   SELECT   *   FROM   @tabname   where   timev>=   @val1       AND   timev<@val2       AND   p_no=@pno     )  
   
  因為我存儲過程執行參數中帶有表名參數,我想實現類似的動態檢測存在某些數據  
  问题点数:20、回复次数:4Top

1 楼yingqing(曾明)回复于 2004-12-04 11:51:20 得分 0

用declare   sysname   @tabnameTop

2 楼zjcxc(邹建)回复于 2004-12-04 11:52:00 得分 20

declare   @tabname   nvarchar(15)  
   
  declare   @s   nvarchar(4000),@r   bit  
  set   @s='set   @r=case   when   exists(   SELECT   *   FROM   '+@tabname+'   where   timev>=   @val1       AND   timev<@val2       AND   p_no=@pno     )   then   1   else   0   end'  
  exec   sp_executesql   @s,  
  N'@val1   varchar(20),@val2   varchar(20),@pno   varchar(20)  
  @r   bit   out',  
  @val1,@val2,@pno  
  ,@r   out  
  if   @r=1      
  begin  
  ---存在记录的处理  
  end  
  else  
  begin  
  ---不存在记录的处理  
  endTop

3 楼landlordh(work wonders)回复于 2004-12-04 14:06:10 得分 0

感謝邹建大哥幫助,但是有個問題不知何固:  
   
  declare   @tabname   nvarchar(15)  
  declare   @val1   nvarchar(20)  
  declare   @val2   nvarchar(20)  
  declare   @pno   nvarchar(20)  
  declare   @s   nvarchar(4000),@r   bit  
  set   @tabname='ys20041201'  
  set   @val1='08:03'  
  set   @val2='11:00'  
  set   @pno='0000801'  
  set   @s='set   @r=case   when   exists(   SELECT   *   FROM   '+@tabname+'   where   timev>=   @val1       AND   timev<@val2       AND   p_no=@pno     )   then   1   else   0   end'  
  exec   sp_executesql   @s,  
  N'@val1   varchar(20),@val2   varchar(20),@pno   varchar(20)  
  @r   bit   out',  
  @val1,@val2,@pno,@r   out  
  if   @r=1      
  begin  
  print('Y')---存在记录的处理  
  end  
  else  
  begin  
  print('N')---不存在记录的处理  
  end  
   
  出錯如下:  
  Server:   Msg   170,   Level   15,   State   1,   Line   2  
  Line   2:   Incorrect   syntax   near   '@r'.  
  Server:   Msg   137,   Level   15,   State   1,   Line   2  
  Must   declare   the   variable   '@pno'.  
  NTop

4 楼landlordh(work wonders)回复于 2004-12-04 14:51:59 得分 0

找到了問題所在,是少了個符號","  
  謝謝Top

相关问题

  • 请教下拉列表控件
  • 请教好的Delphi的邮件列表!
  • 求教,关于图表控件(chart)
  • 求教:关于列表控件
  • 请教 如何读取dat表文件?
  • 关于列表框和列表控件~~~ 求教!
  • 请教无刷新主表明细表分页控件思路
  • 注册表请教
  • 插入表请教。
  • "Access TO SQL Server" 和 "邮件列表" 问题,请教!

关键词

  • 動態
  • ys20041201
  • exists
  • val1and timev

得分解答快速导航

  • 帖主:landlordh
  • zjcxc

相关链接

  • SQL Server类图书

广告也精彩

反馈

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