动态执行sql
EXEC必须是##全局临时表,拼接sql时必须变int或者long转换成字符串(cast as nvarchar(50))
DECLARE @bossSql NVARCHAR(200) IF (SELECT COUNT(*) FROM dbo.ST_Users U WITH ( NOLOCK ) INNER JOIN dbo.BS_Enterprise E WITH ( NOLOCK ) ON U.EnteID = E.EnteID AND U.UserID = E.iPreparedBy WHERE E.EnteID = 1364317 AND UserID = 41629 AND U.UserID = U.iPreparedBy AND U.bUse = 0)>0 BEGIN SET @bossSql=' AND P.EnteID='+CAST(1364317 AS NVARCHAR(50)) END ELSE BEGIN SET @bossSql=' AND P.PondID IN (SELECT U.PondID FROM dbo.ST_UsersRange U WHERE U.bUse=0 AND U.UserID='+CAST(41629 AS NVARCHAR(50))+')'+' AND P.EnteID='+CAST(1364317 AS NVARCHAR(50)) END IF OBJECT_ID(N'tempdb..##pond') IS NOT NULL DROP TABLE ##pond EXEC('SELECT P.PondID,P.cPondNubmer INTO ##pond FROM dbo.BS_FishPond P WHERE P.bUse=0'+@bossSql) IF OBJECT_ID(N'tempdb..#batch') IS NOT NULL DROP TABLE #batch SELECT B.RecordID,B.PondID,B.dStartDate,B.dEndDate,B.cBatchNumber,P.cPondNubmer INTO #batch FROM ##pond P INNER JOIN dbo.MS_BatchManage B ON P.PondID=B.PondID SELECT B.RecordID,CAST(B.PondID AS NVARCHAR(20)) PondID,B.dStartDate,B.dEndDate,B.cBatchNumber,B.cPondNubmer FROM (SELECT MAX(B.RecordID) RecordID FROM #batch B GROUP BY B.PondID) temp INNER JOIN #batch B ON temp.RecordID=B.RecordID ORDER BY B.RecordID IF OBJECT_ID(N'tempdb..##pond') IS NOT NULL DROP TABLE ##pond


浙公网安备 33010602011771号