简单问题又发一帖,用变量替换后不出结果,为啥?请赐教
declare @varYF VARCHAR(4)
declare @varYEAR VARCHAR(4)
declare @varXMBH VARCHAR(9)
declare @varZRZX varchar(200)
declare @varKMBH VARCHAR(200)
declare @intBMJC int
declare @varSql varchar(2000)
set @varYF = '200601 '
set @varYEAR= '2006 '
set @varXMBH= '200083215 '
set @varZRZX = '21011324 '
set @varKMBH= '1002 '
set @intBMJC=4
set @varSql= 'SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP
FROM XT_FZB_ '+@varXMBH+ @varYEAR+ '
WHERE ZRZX like ' ' '+@varZRZX + '% ' ' AND KMBH LIKE ' ' '+@varKMBH + '% ' ' AND YF= ' ' '+@varYF + ' ' '
AND WLBMDM IS NOT NULL GROUP BY SUBSTRING(WLBMDM,1,4)
SELECT A.WLBH,B.WLBMMC FROM #TB_TEMP A, XT_BMK_ '+@varXMBH+@varYEAR+ ' B WHERE A.WLBH=B.WLBMDM '
/* set @varSql= 'SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP
FROM XT_FZB_2000832152006
WHERE ZRZX like ' '21011324% ' ' AND KMBH LIKE ' '1002% ' ' AND YF= ' '200601 ' '
AND WLBMDM IS NOT NULL GROUP BY SUBSTRING(WLBMDM,1,4)
SELECT A.WLBH,B.WLBMMC FROM #TB_TEMP A, XT_BMK_2000832152006 B WHERE A.WLBH=B.WLBMDM ' */
exec(@varSql)
------解决方案--------------------检查一下这句话
SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP
FROM XT_FZB_2000832152006
WHERE ZRZX like '21011324% ' AND KMBH LIKE '1002% ' AND YF= '2006 '
AND WLBMDM IS NOT NULL GROUP BY SUBSTRING(WLBMDM,1,4)
SELECT A.WLBH,B.WLBMMC FROM #TB_TEMP A, XT_BMK_2000832152006 B WHERE A.WLBH=B.WLBMDM
------解决方案--------------------沒看到錯誤,錯誤提示還是那個?
------解决方案--------------------单引号错误
------解决方案--------------------你把它拆开执行不好吗?前面到
select 等号右边 as aa 应该得到一个字符串
SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP
FROM XT_FZB_2000832152006
WHERE ZRZX like '21011324% ' AND
KMBH LIKE '1002% ' AND
YF= '2006 ' AND
WLBMDM IS NOT NULL
GROUP BY SUBSTRING(WLBMDM,1,4)
结束,exec(xxx)
然后
SELECT A.WLBH,B.WLBMMC F
现在你拼出的sql最后面是SELECT A.WLBH,B.WLBMMC F而不是group by就结束,是两个语句
------解决方案--------------------用 print @varSql 将动态的Sql语句打印出来看看,和没有拼的语句比较一下有什么区别
like ' ' '+@varZRZX + '% ' ' AND KMBH LIKE ' ' '+@varKMBH + '% ' '
这句话的嫌疑最大,因为不知道 @varZRZX 变量中是连接以后到底是什么
------解决方案--------------------这样试试
declare @varYF VARCHAR(4)