1

でスキップする (またはオプションのパラメーターを指定しない) にはどうすればよいDatabase.ExecuteSqlCommandですか?

create procedure SetElementFrequency
  @ElementTypeID integer,
  @Frequency float = null,
  @ElementName integer,
as ...

私は運なしで次のことを試しました..それはまだ私が@Frequencyパラメータを提供することを期待しています

Database.ExecuteSqlCommand(
    "exec SetElementFrequency {0}, {1}",
    elementType, elementName); 

Database.ExecuteSqlCommand(
    "exec SetElementFrequency @ElementTypeID, @ElementName",
    elementType, elementName); 

編集:

「@Frequency」パラメータは、将来ストアド プロシージャから完全に削除されます。まだ提供しているレガシーアプリケーションがいくつかあり@Frequency、すべてのアプリケーションで変更することはできません。新しく作成されたアプリケーションは、@Frequency

4

1 に答える 1

1

次のように SQL パラメーター化を使用するように exec 形式を変更し、それがより適切に機能するかどうかを確認できます。

Database.ExecuteSqlCommand(
"exec SetElementFrequency @ElementTypeID = {0}, @Frequency = {1}, @ElementName = {2}",
elementType, null, elementName);
于 2013-10-23T10:09:01.843 に答える