CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

动态SQL中的变量@DEPT使用

楼主vbsnake(泡泡龙)2005-04-06 11:13:09 在 MS-SQL Server / 基础类 提问

DECLARE   @DEPT   VARCHAR(10)  
  DECLARE   @SQL   VARCHAR(8000)  
  SET   @SQL=''  
  SET   @DEPT='A'  
  SELECT     @SQL=   @SQL+   ','+quotename(B.NAME,'''')+'=isnull(sum(CASE   CODE   when   '+quotename(A.CODE,'''')+'   THEN   NQTY   END),0)'   FROM   T   A(NOLOCK),CODENAME     B(NOLOCK)    
  WHERE   A.CODE   =   B.CODE    
   
  set   @SQL   =   'select   DEPT,PKG,LOT'+@SQL+',TOTAL=sum(NQTY)   from   T    
  WHERE   DEPT   LIKE   RTRIM('+@DEPT+')+''%''  
  Group   by   DEPT,PKG,LOT   with   rollup'  
  exec(@SQL)  
   
  1.以上语句中   WHERE   DEPT   LIKE   RTRIM('+@DEPT+')+''%''有误,不使用rtrim的时候就没问题,该如何处理呢?  
  2.如何最终查询结果集的return  
  问题点数:80、回复次数:8Top

1 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-04-06 11:19:04 得分 20

DECLARE   @DEPT   VARCHAR(10)  
  DECLARE   @SQL   VARCHAR(8000)  
  SET   @SQL=''  
  SET   @DEPT='A'  
  SELECT     @SQL=   @SQL+   ','+quotename(B.NAME,'''')+'=isnull(sum(CASE   CODE   when   '+quotename(A.CODE,'''')+'   THEN   NQTY   END),0)'   FROM   T   A(NOLOCK),CODENAME     B(NOLOCK)    
  WHERE   A.CODE   =   B.CODE    
   
  set   @SQL   =   'select   DEPT,PKG,LOT'+@SQL+',TOTAL=sum(NQTY)   from   T    
  WHERE   DEPT   LIKE   RTRIM('''+@DEPT+''')+''%''  
  Group   by   DEPT,PKG,LOT   with   rollup'  
  exec(@SQL)Top

2 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-04-06 11:20:33 得分 10

如果在存储过程中执行该动态SQL语句,直接从存储过程结果集中获取这个查询的返回。Top

3 楼zjcxc(邹建)回复于 2005-04-06 11:21:11 得分 30

DECLARE   @DEPT   VARCHAR(10)  
  DECLARE   @SQL   VARCHAR(8000)  
  SET   @SQL=''  
  SET   @DEPT='A'  
  SELECT     @SQL=   @SQL+   ','+quotename(B.NAME,'''')+'=isnull(sum(CASE   CODE   when   '+quotename(A.CODE,'''')+'   THEN   NQTY   END),0)'   FROM   T   A(NOLOCK),CODENAME     B(NOLOCK)    
  WHERE   A.CODE   =   B.CODE    
   
  set   @SQL   =   'select   DEPT,PKG,LOT'+@SQL+',TOTAL=sum(NQTY)   from   T    
  WHERE   DEPT   LIKE   '''+RTRIM(@DEPT)+'%''  
  Group   by   DEPT,PKG,LOT   with   rollup'  
  exec(@SQL)Top

4 楼zjcxc(邹建)回复于 2005-04-06 11:22:08 得分 10

RTRIM不应该放在动态语句中Top

5 楼libin_ftsafe(子陌红尘:TS for Banking Card)回复于 2005-04-06 11:22:09 得分 10

用exec()执行的动态SQL语句返回的结果集跟普通SQL语句执行返回的结果集一样调用。Top

6 楼vbsnake(泡泡龙)回复于 2005-04-06 11:34:46 得分 0

如果增加     DECLARE                             @DTE           DATETIME      
  WHERE   DEPT   LIKE   '''+RTRIM(@DEPT)+'%''  
  改成类似于  
  WHERE   DEPT   LIKE   '''+RTRIM(@DEPT)+'%''   and   MDATE>=@DTE  
  怎么写啊  
  Top

7 楼vbsnake(泡泡龙)回复于 2005-04-06 11:35:38 得分 0

用exec()执行的动态SQL语句返回的结果集跟普通SQL语句执行返回的结果集一样调用。  
   
   
  是不是直接写return   阿???Top

8 楼rocklabzhang()回复于 2005-04-06 21:55:49 得分 0

markTop

相关问题

  • 动态SQL引用DATETIME变量
  • 动态SQL语句中变量问题?????
  • 在动态sql里面如何返回动态变量的值?
  • =========动态SQL语句中如何引用变量(在线等待)=========
  • 动态SQL中的 日期型变量@DATE 使用
  • 关于动态SQL 变量绑定问题
  • 急!!!关于Sql语句动态给变量附值!
  • 如何用动态SQL语句打开游标变量
  • 动态SQL中表名不能使用变量?
  • 我想在 sql 里动态加 order by....我private 了一个变量不行。。。。。。。。

关键词

  • 语句
  • 执行
  • code
  • sql
  • dept
  • nqty
  • nolock
  • quotename
  • rtrim
  • pkg

得分解答快速导航

  • 帖主:vbsnake
  • libin_ftsafe
  • libin_ftsafe
  • zjcxc
  • zjcxc
  • libin_ftsafe

相关链接

  • SQL Server类图书

广告也精彩

反馈

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