动态SQL中的变量@DEPT使用
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




