對不起,我試圖提供大量的信息來避免不相關的解決方案。來自select語句的SQL更新
我的目標是至少將1條UPDATE語句嵌入到SELECT語句中,以便我有機會在選擇語句運行之前更新一些計算值(將它想象爲SELECT上的TRIGGER)。 VIEW並不是即時解決方案,因爲我受到我使用的系統的限制(見下文)。
我正在定製功能較弱的第三方商業ERP(系統將保持無名! - 結果是你還沒有聽說過它,但它的家鄉也沒有)。它擁有一個可以使用文本/ GUI來構建SELECT查詢的預設查詢工具。保存查詢後,用戶可以單擊查詢來執行查詢並查看結果。 ERP運行在MS SQL Server 2000上;版本升級現在不在卡中。我可以使用任何我想要的語言編寫我需要的ERP外部功能集,如果功能允許,我可以在過去做過這些功能。但是,我的用戶社區發現,當我的定製可以在ERP系統中完成時更容易。
該查詢可以是任意複雜的,但ERP包本身構建SQL Select語句。內部編譯後的ERP是這樣的(這只是一個猜測!):
"SELECT " + fieldList + " FROM " + tableListAndJoins + " WHERE " + whereCond
的GUI構建器可以幫助新手用戶建立字段列表等等,但你可以繞過它,寫文字,只要條款因爲如上所述組合時SQL是有效的。
我似乎無法找到一個咒語來運行存儲過程作爲SELECT語句的副作用,無論是在select子句,where子句等等。我真的不在乎我如何越獄系統 - 一個穩定的SQL注入攻擊會很好,只要它不意味着我必須修改底層sql server本身的安全性。我已經看過UDF,但是你不能把UPDATE語句放到標量UDF中,並且試圖修改表UDF的返回值(或者是否是這樣)是沒有意義的。如果你可以在VIEW中更新,那麼我希望看到一個例子,但我意識到我可以使用VIEW來計算列,這不是我正在尋找的解決方案。我在網上閱讀了一個關於能夠使用某種XP_來完成這個任務的暗示性聲明,但是至於XP_或者怎麼做,我不知道。
這個問題不解決,就其本身:Updating a table within a select statement
僅供參考額外的研究表明,CLR函數可能讓我那裏,但CLR函數不可用在SQL 2000. – user130582 2009-06-29 19:04:58