を使用してパラメータを取得する方法:私は次のクエリのパラメータを取得するための方法を見つける必要があるテキストコマンド
query = @"declare @p7 int
exec some_sproc @[email protected]
select @p7";
sqlCommand.CommandText = query;
sqlCommand.CommandType = CommandType.Text;
Iの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)
に評価され、テーブル値パラメータを使用しています。しかし、私の意図は、構文以下得ることです:私は手動でSQLコードをビルドする理由
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)
これは、 。だから我々は:
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もマップする必要があり、問題があります。
プロファイラトレースからのコピー/ペーストのように見える...の.textは、あなたが行っている、sp_executesqlを経由して呼び出します。あなたの質問に詳細を追加して、私が考えている答えを得る必要がある。 –
プロシージャーを実行するためにコマンド・タイプのテキストを使用するという奇妙な要件があるようです。ストアドプロシージャを意図したとおりに使用できないのはなぜですか? –
ADO.NETでテーブル値パラメータを作成して使用することができます。出力パラメータも定義できます。この構文を使用する理由はありません –