申し訳ありませんが、関連性のない解決策を避けるために、多くの情報を提供しようとしています。
私の目標は、少なくとも1つのUPDATEステートメントをSELECTステートメントに埋め込んで、selectステートメントが実行される直前に計算値を更新できるようにすることです(SELECTのTRIGGERのように考えてください)。使用しているシステムに制約されているため、VIEWはすぐには解決できません(以下を参照)。
機能に弱いサードパーティの商用ERPをカスタマイズしています(システムは無名のままです!-結果として、聞いたことはありませんが、自家栽培ではありません)。これには、テキスト/GUIを使用してSELECTクエリを作成できる既定のクエリ機能があります。クエリを保存すると、ユーザーはクエリをクリックして実行し、結果を確認できます。ERPはMSSQLServer2000上で実行されます。現在、バージョンアップグレードはカードに含まれていません。ERPの外で必要な機能セットを好きな言語で書くことができます。機能がそれを正当化するのであれば、私は過去にこれを行いました。しかし、私のユーザーコミュニティは、ERPシステムでカスタマイズを行うことができれば簡単だと感じています。
クエリは任意に複雑にすることができますが、ERPパッケージはSQLSelectステートメント自体を構築します。コンパイルされたERPの内部は、次のようなものです(これは単なる推測です!):
"SELECT " + fieldList + " FROM " + tableListAndJoins + " WHERE " + whereCond
GUIビルダーは、初心者ユーザーがfieldListなどを作成するのに役立ちますが、上記のように組み合わせたときにSQLが有効である限り、それをバイパスして句をテキストで記述することができます。
select句、where句などにあるかどうかにかかわらず、SELECTステートメントの副作用としてストアドプロシージャを実行するための呪文を見つけることができないようです。システムをジェイルブレイクする方法は本当に気にしません-安定した基盤となるSQLサーバー自体のセキュリティを変更する必要がない限り、SQLインジェクション攻撃は問題ありません。UDFを見てきましたが、UPDATEステートメントをスカラーUDFに入れることはできず、テーブルUDFの戻り値を変更しようとしても意味がありません(またはそうしますか?)。VIEW内から更新できる場合は、例を見たいと思いますが、VIEWを使用して列を計算できることはわかっていますが、それは私が探している解決策ではありません。ある種のXP_を使用してこれを達成できることについての示唆的な声明をオンラインで読みましたが、どのXP_またはそれを行う方法についてはわかりません。
この質問は、それ自体では解決策ではありません。selectステートメント内のテーブルを更新する