CTE を使用するストアド プロシージャがあり、正常に動作しました。最近新しいサーバーに移動しましたが、エラーが発生しました
マルチパート識別子「DOWNLOADS_downloadCategoryLink.categoryID」をバインドできませんでした
データベースの互換性レベルを 80 (SQL Server 2000) に変更することでこれを修正できますが、問題を適切に修正したいと考えています。
ストアド プロシージャは次のとおりです。
;WITH CTE( CategoryID, ParentCategoryID )
AS
(
SELECT CategoryID, ParentCategoryID
FROM DOWNLOADS_fileCategories
WHERE CategoryID = @startCategoryID
UNION ALL
SELECT a.CategoryID, a.ParentCategoryID
FROM DOWNLOADS_fileCategories a
INNER JOIN CTE b ON b.CategoryID = a.ParentCategoryID
)
SELECT CategoryID INTO #tempLinkTable FROM CTE
set @query = 'SELECT TOP ' + cast(@noRecordsToReturn as varchar(5)) + ' DOWNLOADS_files.downloadID, DOWNLOADS_files.fileTypeID, DOWNLOADS_files.downloadName, DOWNLOADS_files.downloadFileName, DOWNLOADS_files.sizeInKb, DOWNLOADS_files.dateAdded, DOWNLOADS_files.visible, SYS_fileTypes.fileTypeName, SYS_fileTypes.fileTypeExtension
FROM DOWNLOADS_files LEFT OUTER JOIN SYS_fileTypes ON DOWNLOADS_files.fileTypeID = SYS_fileTypes.fileTypeID INNER JOIN
#tempLinkTable ON DOWNLOADS_downloadCategoryLink.categoryID = #tempLinkTable.categoryID
ORDER BY DOWNLOADS_files.dateAdded DESC'
exec(@query)
私が持っているテーブルは次のとおりです。
DOWNLOADS_files
downloadID
downloadFileName
DOWNLOADS_fileCategories
categoryID
parentCategoryID
categoryName
DOWNLOADS_fileCategoryLink
categoryID
downloadID
どうもありがとう!
ボブ