我需要找到一个方法来检索出以下查询参数检索输出参数:如何使用文本命令
query = @"declare @p7 int
exec some_sproc @[email protected]
select @p7";
sqlCommand.CommandText = query;
sqlCommand.CommandType = CommandType.Text;
我厌倦了加入SQL paramater但随后整个代码简单地包裹着exec sp_executesql
和该参数已添加。这根本行不通。你知道我如何在C#端获得@ p7的价值吗?
我的存储过程使用表值参数,但是默认情况下它被评估为
declare @p11 acco.SomeUDT
insert into @p11 values(1,'2017-06-15 00:00:00',64.73)
insert into @p11 values(1,'2017-06-15 00:00:00',1.30)
但我的本意是让下面的语法:
declare @p11 acco.SomeUDT
insert into @p11 values(1,'2017-06-15 00:00:00',64.73), (1,'2017-06-15 00:00:00',1.30)
这就是为什么我建立手动SQL代码。所以我们有:
query = @"declare @p7 int
declare @p11 acco.SomeUDT
insert into @p11 values(1,'2017-06-15 00:00:00',64.73), (1,'2017-06-15 00:00:00',1.30)
exec some_sproc @[email protected], @[email protected]
select @p7";
sqlCommand.CommandText = query;
sqlCommand.CommandType = CommandType.Text;
如果我使用存储过程类型和SQL参数比我得到第一个语法。
所有的作品,但我需要映射出参数@SomeArg和我有这个问题。
这看起来像一个探查器跟踪复制/粘贴...。文本将通过sp_executesql的电话,你会需要添加更多的细节到你的问题来得到我想的答案。 –
似乎有一个相当离奇的要求,即您不得不使用命令类型文本来执行过程。为什么不能按照预期的方式使用存储过程? –
您可以使用ADO.NET创建和使用表值参数。您也可以定义输出参数。没有理由使用此语法 –