如何解决Linq2SQL 中没有存储过程的返回类型
我用 SQL 编写了一个存储过程,并想在我的 Linq2SQL 设计器中使用它。因此,我像往常一样将它从 Visual Studio (2019) 中的服务器资源管理器拖放到我的设计器中,但此过程的返回类型为无。 看我的SQL程序时似乎很清楚没有返回值,因为它使用EXEC来执行查询,但我可以在SQL Server Management Studio中看到结果。
这是我的存储过程:
CREATE PROCEDURE [dbo].[ret_VAL]
@ITEMNR nvarchar(255),@COLUM_NAME nvarchar(255)
AS
DECLARE @query AS NVARCHAR(max)
SET @query = N'SELECT ' + @COLUM_NAME + ' AS VALUE FROM [PROD].[dbo].[MMView] Where ITEMNUMBER like ''' + @ITEMNR + ''''
EXEC (@query)
GO
当我在 SSMS 中运行存储过程时,我得到了一个结果,但我无法在 Linq2SQL 中使用它。当然,我可以将它拖放到我的 Linq2SQL 设计器中,但它没有返回类型。有人可以告诉我我在这里缺少什么以获得返回类型(返回值)吗?
解决方法
L2S 设计者无法确定动态执行查询的返回类型。
您在“@colum_name”参数中传递的所有列是否都具有相同的数据类型?
如果是这样,如果您暂时将存储的过程更改为:
CREATE PROCEDURE [dbo].[ret_VAL]
@ITEMNR nvarchar(255),@COLUM_NAME nvarchar(255)
AS
SELECT top 1 somecolumn AS VALUE FROM [PROD].[dbo].[MMView] Where 1=0
GO
...然后将其添加到 L2S 设计器,然后它应该在数据上下文中获得正确的返回类型定义。然后您可以将存储的 proc 更改回原始定义。
但是,如果列的数据类型不同,那么这将不起作用,因为定义只会匹配您在临时更改的存储过程中使用的列。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。