1

在下面的查询中,我不断收到此错误:

Cannot read the next data row for the dataset DataSetProject. (rsErrorReadingNextDataRow)

它似乎是 where 子句,如果我把它拿出来它似乎工作。所以我在 where 子句中添加了一个演员,但没有运气。在 where 子句中我需要做一些特别的事情来让它工作吗?仅供参考,这是在从 url 中提取 id 的报告中。

SELECT new_projects.new_projectsId AS ProjectId
     , new_projects.new_name AS ProjectName
     , new_projects.new_Description AS ProjectDescription

FROM
    new_projects
    LEFT OUTER JOIN new_projectsteps
        ON new_projects.new_projectsId = new_projectsteps.new_ProjectSteps2Id
    LEFT OUTER JOIN Task
        ON new_projectsteps.new_projectstepsId = Task.RegardingObjectId
WHERE
(new_projects.new_projectsId = cast(@id AS UNIQUEIDENTIFIER))

谢谢!

编辑:

SQL 中的 id 是唯一标识符,@id 的值是从查询字符串(url)中提取的。所以它看起来像:&id='BC02ABC0-A6A9-E111-BCAD-32B731EEDD84'

很抱歉缺少信息。

4

1 回答 1

2

我怀疑单引号正在通过。因此,要么在传递给您的参数之前将它们剥离,要么使用:

WHERE new_projects.new_projectsId = CONVERT(UNIQUEIDENTIFIER, REPLACE(@id, '''', ''));

如果您在 GUID 包含其他字符时尝试直接比较,您应该得到:

消息 8169,级别 16,状态 2,第 1 行
从字符串转换为唯一标识符时转换失败。

如果这不是正在发生的事情,那么不要说“SQL 中的 id 是唯一标识符” - 显示所有代码,以便我们可以尝试重现问题。

于 2012-06-26T17:40:31.660 回答