• ベストアンサー

テーブル値関数経由でのデータ更新

AccessのADPからSQLへアクセスしているのですが ↓のテーブル値関数(Q_仕訳明細)をレコードソースに指定してある フォームがあるのですが、コントロールの内容を変更してレコードを 移動させると、テーブルに変更した内容が反映されます。 そう言う物であれば、ビューよりも利用価値があると思うのですが、 私が変な設定をしているのでしょうか? ALTER FUNCTION [dbo].[Q_仕訳明細] () RETURNS TABLE AS RETURN SELECT TOP 100 PERCENT 請求番号, 行番, 部門コード,勘定科目コード, 補助科目コード, 摘要, 金額, 税区分 FROM T_仕訳明細 ORDER BY 請求番号, 行番

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

私も実際にそういう使い方をしたことはありませんでしたが、確かに インライン関数はビューと同じ基準で更新可能な内容であれば、更新できるとmsdnにも書かれていました。 従って、その使い方は別に変ではありません。 (が、パラメータを切らない限りはビューと比べてうまみもありません) ただし、この使い方はあくまでもインライン関数(戻り値にテーブル変数を使わずダイレクトにリターンする)のみ可能ですので、その点だけはご留意ください。

SEsyo
質問者

お礼

意図した訳ではなく、アップサイジングされたフォームのレコードソースのクエリがテーブル値関数に置き換えられており、そのまま訂正が出来たので???状態で質問しました。 先日お聞きして駄目だったストアドへの更新をこれで検討してみます。 ありがとうございました。

その他の回答 (1)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

一般論ですが、Viewは固定的な参照を行う目的で作成されます。 関数は引数を与えると結果が返されるという動的参照を目的とします。 掲題の関数は引数が無く、常に一定の結果を返すという点では前者に 近い感覚です。 Viewはの利点は他のDBシステムとの互換性が高いということです。 DBシステムの移行を視野に入れると、固定的な結果しか返さない 関数よりは利用価値が高いと判断します。

SEsyo
質問者

お礼

回答ありがとうございます。 パラメータを指定してレコードが絞れるので、使い道を色々検討して見たいと考えています。

関連するQ&A