C# 为什么不从存储过程中获取所需的输出

C# 为什么不从存储过程中获取所需的输出,c#,sql-server,linq,linq-to-sql,stored-procedures,C#,Sql Server,Linq,Linq To Sql,Stored Procedures,为了满足我的一个需求,我需要将SQL查询作为参数传递给存储过程 我的存储过程语法是: create PROCEDURE spSelect @Query VARCHAR(500) AS EXEC( @Query) return 要执行该存储过程,我使用以下C代码: 执行后,结果为0 需要帮助了解发生了什么,为什么我得不到想要的输出 如果您有任何疑问,请询问,提前感谢您需要使用执行: create PROCEDURE spSelect @Query VARCH

为了满足我的一个需求,我需要将SQL查询作为参数传递给存储过程

我的存储过程语法是:

create PROCEDURE spSelect 
    @Query VARCHAR(500)
AS 
    EXEC( @Query)  
    return  
要执行该存储过程,我使用以下C代码:

执行后,
结果
0

需要帮助了解发生了什么,为什么我得不到想要的输出

如果您有任何疑问,请询问,提前感谢

您需要使用执行:

create PROCEDURE spSelect 
@Query VARCHAR(500)
AS 
    EXECUTE sp_executesql @Query
 return 

Jeremy Thompson,感谢您的回复尝试您的语法,但未能获得结果Jeremy已经确定,一旦您处理好C#挑战,您将面临一个问题。您编写的SP假定您正在传入动态sql
EXEC
将不执行动态sql。要使用动态sql,必须使用
executesSQL
。请仔细阅读。您需要使用类似于
SqlDataReader
的工具才能真正读取返回的结果集。您没有将所有的
OrderID、ShipName
返回到单个变量
结果中,
…marc_s,谢谢您的回复,在linq中如何使用SQLDataReader这实际编译了吗?什么类型的对象是
db
?我以前没有见过
对象的语法。
。。。使用.NET调用存储过程可能有数百种方法,但我不认为您拥有的是其中之一。我建议先使用搜索引擎。一篇让你开始的文章。除了那篇文章之外,我建议进行进一步的研究和阅读。“我需要传递一个SQL查询”不是一个要求。这是“我想不出比这更好的方法了”。或者是“DBA不允许我直接执行SQL,我必须通过存储过程-希望他们不要审核这个”Damien_,不信者,耶!您是对的。需要动态执行sql查询,sql查询=sp的参数
create PROCEDURE spSelect 
@Query VARCHAR(500)
AS 
    EXECUTE sp_executesql @Query
 return