在下面的查询中,我不断收到此错误:
Cannot read the next data row for the dataset DataSetProject. (rsErrorReadingNextDataRow)
它似乎是where子句,如果我把它取出它似乎工作。所以我添加了一个转换为where子句,没有运气。在where子句中我需要做些什么特别的事情才能让它工作吗?只是一个FYI,这是一个从网址中提取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'
抱歉缺少信息。
答案 0 :(得分:2)
我怀疑单引号是通过的。因此要么在传递给参数之前将它们剥离出来,要么使用:
WHERE new_projects.new_projectsId = CONVERT(UNIQUEIDENTIFIER, REPLACE(@id, '''', ''));
如果你在GUID包含其他字符时尝试直接比较,你应该得到:
Msg 8169,Level 16,State 2,Line 1
当转换失败 从字符串转换为uniqueidentifier。
如果这不是正在发生的事情,那么不要说“SQL中的id是唯一标识符” - 显示所有代码,以便我们可以尝试重现该问题。