我需要找到一個方法來檢索出以下查詢參數檢索輸出參數:如何使用文本命令
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創建和使用表值參數。您也可以定義輸出參數。沒有理由使用此語法 –