declare @varYF 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 @varXMBH='200083215'
set @varZRZX ='21011324'
set @varKMBH='1002'
set @intBMJC=4set @varSql ='SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP 
FROM XT_FZB_'+@varXMBH+ substring('+@varYF+',1,4) +' 
 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+substring('+@varYF+',1,4) +' B WHERE A.WLBH=B.WLBMDM
DROP TABLE  #TB_TEMP ' print @varSql 结果显示:(1 row affected)
(1 row affected)
(1 row affected)
(1 row affected)
(1 row affected)
Server Message:  Number  2747, Severity  16
Server 'sjcs', Line 21:
Incorrect position specifier in format string of PRINT command. 

解决方案 »

  1.   

    --try
    declare @varYF 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 @varXMBH='200083215'
    set @varZRZX ='21011324'
    set @varKMBH='1002'
    set @intBMJC=4set @varSql ='SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP 
    FROM XT_FZB_'+@varXMBH+ substring(@varYF,1,4) +' 
     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+substring(@varYF,1,4) +' B WHERE A.WLBH=B.WLBMDM
    DROP TABLE  #TB_TEMP ' print @varSql 
      

  2.   

    declare @varYF 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 @varXMBH='200083215'
    set @varZRZX ='21011324'
    set @varKMBH='1002'
    set @intBMJC=4set @varSql ='SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP 
    FROM XT_FZB_'+@varXMBH+ 'substring('+@varYF+',1,4)' +' 
     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+'substring('+@varYF+',1,4) '+' B WHERE A.WLBH=B.WLBMDM
    DROP TABLE  #TB_TEMP ' print @varSql 
      

  3.   

    兩個地方都要處理declare @varYF 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 @varXMBH='200083215'
    set @varZRZX ='21011324'
    set @varKMBH='1002'
    set @intBMJC=4set @varSql ='SELECT SUBSTRING(WLBMDM,1,4) AS WLBH, SUM(QCJFYE) AS QCJFYE INTO #TB_TEMP 
    FROM XT_FZB_'+@varXMBH+ substring(@varYF,1,4) +' 
     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+substring(@varYF,1,4) +' B WHERE A.WLBH=B.WLBMDM;
    DROP TABLE  #TB_TEMP ' print @varSql
      

  4.   

    不過,你的錯誤Server Message:  Number  2747, Severity  16
    Server 'sjcs', Line 21:
    Incorrect position specifier in format string of PRINT command. 在你上面的代碼中沒有sjcs這樣的東西,你的代碼是不是沒有貼全?
      

  5.   

    确实没有 sjcs 是不是数据库少东西了 我用的是SYBASE12.5 这部分语法应该一样吧
      

  6.   

    我换了种写法但是标注部分能出结果,而用变量的语句就出不来结果,帮我看看吧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)
      

  7.   

    這是你完整的代碼?這個在SQL中應該沒問題的。難道是SYBASE中寫法不一樣?