DECLARE @SQL1 VARCHAR(8000)

SET @SQL1='
INSERT INTO #T1
SELECT *
FROM   OPENQUERY(ICP_DB_SERVER,'' 
SELECT B.YM AS PureDomain,
   A.wzmc AS SiteName,
   C.baxh AS SubjectRecordNum,
   A.baxh AS SiteRecordNum
FROM   icp_gn_baxx_wz A RIGHT JOIN
   icp_gn_baxx_ymlb B ON A.ID = B.WZID LEFT JOIN
   icp_gn_baxx_zt C ON A.ZTID = C.ID
WHERE  B.YM ="+@PureDomain+"'')'
因为数据库服务器瘫痪,无法实际测试,想请高手帮忙先看下会出什么问题,谢谢。

解决方案 »

  1.   

    where 条件错误 WHERE B.YM ='''''+@PureDomain+'''''
      

  2.   


    DECLARE @SQL1 VARCHAR(8000)SET @SQL1='
    INSERT INTO #T1
    SELECT *
    FROM OPENQUERY(ICP_DB_SERVER,''  
    SELECT B.YM AS PureDomain,
    A.wzmc AS SiteName,
    C.baxh AS SubjectRecordNum,
    A.baxh AS SiteRecordNum
    FROM icp_gn_baxx_wz A RIGHT JOIN
    icp_gn_baxx_ymlb B ON A.ID = B.WZID LEFT JOIN
    icp_gn_baxx_zt C ON A.ZTID = C.ID
    WHERE B.YM ='''''+@PureDomain+''''' '')'
      

  3.   

    FROM OPENQUERY(ICP_DB_SERVER,'' 这一句是连接到MYSQL的,我也是照搬的,就是不明白WHERE B.YM ='''''+@PureDomain+''''' 为什么要加5个'?
      

  4.   

    你这样不正确。应该是DECLARE @SQL1 VARCHAR(8000)SET @SQL1='
    INSERT INTO #T1
    SELECT *
    FROM OPENQUERY(ICP_DB_SERVER,''''  
    SELECT B.YM AS PureDomain,
    A.wzmc AS SiteName,
    C.baxh AS SubjectRecordNum,
    A.baxh AS SiteRecordNum
    FROM icp_gn_baxx_wz A RIGHT JOIN
    icp_gn_baxx_ymlb B ON A.ID = B.WZID LEFT JOIN
    icp_gn_baxx_zt C ON A.ZTID = C.ID
    WHERE B.YM ='+@PureDomain+''')'
      

  5.   

    讲下  OPENQUERY函数怎么带查询参数吧
      

  6.   

    效果其实是 WHERE B.YM ="'+@PureDomain+'"
      

  7.   


    因为OPENQUERY(''  ……'')内部已经含有2个
    如果不清楚到底该加几个'',教你一中办法
    先SET @SQL1='……'
    然后print @SQL1
    通过调整@SQL1中''个数,看print结果是否正确
      

  8.   

    DECLARE @SQL1 VARCHAR(8000)
    declare @PureDomain varchar(max)
    set @PureDomain='aa'
    SET @SQL1='
    INSERT INTO #T1
    SELECT *
    FROM OPENQUERY(ICP_DB_SERVER,''  
    SELECT B.YM AS PureDomain,
    A.wzmc AS SiteName,
    C.baxh AS SubjectRecordNum,
    A.baxh AS SiteRecordNum
    FROM icp_gn_baxx_wz A RIGHT JOIN
    icp_gn_baxx_ymlb B ON A.ID = B.WZID LEFT JOIN
    icp_gn_baxx_zt C ON A.ZTID = C.ID
    WHERE B.YM ='''+@PureDomain+''')'print @sql1
    -----------------------------------------
    INSERT INTO #T1
    SELECT *
    FROM OPENQUERY(ICP_DB_SERVER,'  
    SELECT B.YM AS PureDomain,
    A.wzmc AS SiteName,
    C.baxh AS SubjectRecordNum,
    A.baxh AS SiteRecordNum
    FROM icp_gn_baxx_wz A RIGHT JOIN
    icp_gn_baxx_ymlb B ON A.ID = B.WZID LEFT JOIN
    icp_gn_baxx_zt C ON A.ZTID = C.ID
    WHERE B.YM ='aa')