存储过程使用连接从一个表中选择所有字段

Posted

技术标签:

【中文标题】存储过程使用连接从一个表中选择所有字段【英文标题】:Store procedure select all fields from One table using join 【发布时间】:2009-08-06 00:20:18 【问题描述】:

在处理与跳过扩展的多对多关系时,我对 linq to sql 感到非常沮丧。它不允许我使用连接查询。不确定 SQL Server 2005 的情况,但我目前使用的是 SQL Server 2000。

现在我考虑编写一个存储过程来获取一个由两个表匹配的表,例如Album_Photo (Album->Album_Photo

例如

var albums = (from r in result
    where (modifier_id == r.ModifierID || user_id == r.UserID)
    select new Album()  
        Name = r.Name, 
        UserID = r.UserID, 
        ModifierID = r.ModifierID, 
        ID = r.ID, 
        DateCreated = r.DateCreated, 
        Description = r.Description, 
        Filename = r.Filename 
    ).AsQueryable();

我使用 AsQueryable 将结果作为 IQueryable 而不是 IEnumerable。后来我想对集合做点什么,它给了我这个错误:

System.InvalidOperationException: 查询结果不能枚举多次。

【问题讨论】:

【参考方案1】:

听起来您的情况是,当您想稍后在代码中对其进行过滤时,查询已经执行。

你能做点什么吗...

var albums = (blah blah blah).AsQueryable().Where(filterClause) 当您有足够的信息进行处理时

如果您稍后在代码中尝试 albums.where(filter) 会发生什么?这是你正在尝试的吗?

【讨论】:

以上是关于存储过程使用连接从一个表中选择所有字段的主要内容,如果未能解决你的问题,请参考以下文章

如何使用plsql导出oracle数据建表语句,存储过程,视图.以及表中数据

MYSQL 从存储过程中的临时表中选择 JOIN 不起作用

sql存储过程从一张表中查询到的值作为另一张表的新的字段

在 PHP 中插入和从存储过程中选择

如何将存储过程的结果返回到用于插入记录的选择语句

跳出查询以在存储过程中从单独的表中获取 where 子句