0

我有以下存储过程:

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[GetData]
    @taskName VARCHAR(205) = NULL
AS
BEGIN
    SELECT  *
    FROM    [dbo].[Table] WITH (NOLOCK)
    WHERE   @taskName IS NULL 
            OR @taskName = '' 
            OR Name LIKE '%' + @taskName + '%'
    ORDER BY Name
END

现在我创建了一个File.edmx生成的模型,选择了GetData存储过程,当我执行函数导入并得到“获取列信息”时,它说

选定的存储过程不返回任何列

dbo_owner在数据库中,生成时是我的用户在 app.config 中,我什至将密码app.config(临时)存储在其中,当我从 Management Studio 运行该过程时,它会显示列..

我很困惑!

4

3 回答 3

1

尝试

ALTER PROCEDURE [dbo].[GetData]
@taskName VARCHAR(205) = NULL
AS
BEGIN
    exec ('SELECT * FROM [dbo].[Table] WITH (NOLOCK) WHERE ' + @taskName + 'IS NULL OR ' + @taskName + ' = \'\' OR Name LIKE \'%' + @taskName + '%\' ORDER BY Name')
END
GO
于 2012-05-16T15:29:08.567 回答
1

您需要在 select 语句中指定字段名称,而不仅仅是使用 *

于 2012-05-16T15:14:14.343 回答
0

我会尝试相同的过程,但只使用

SELECT  *
FROM    [dbo].[Table] WITH (NOLOCK)

而不是完整的查询。然后您可以更改您的过程以添加位置。

有时,由于 were 子句,EF 在识别返回列时遇到问题

于 2012-05-16T15:50:19.063 回答