Xin lỗi vì chiều dài của điều này, tôi đang cố gắng để cung cấp cho rất nhiều thông tin để tránh các giải pháp phi có liên quan.SQL cập nhật từ lựa chọn công bố
Mục tiêu của tôi là nhúng ít nhất 1 câu lệnh UPDATE vào câu lệnh SELECT để tôi có thể cập nhật một số giá trị được tính ngay trước khi câu lệnh chọn chạy (nghĩ về nó giống như TRIGGER on SELECT). VIEW không có giải pháp ngay lập tức vì tôi bị hạn chế bởi hệ thống tôi đang sử dụng (xem bên dưới).
Tôi đang tùy chỉnh hệ thống ERP thương mại bên thứ ba yếu về các tính năng (hệ thống sẽ không có tên!) - bạn chưa từng nghe về nó, nhưng không phải nhà của nó cũng phát triển). Nó có một cơ sở truy vấn đóng hộp nơi tôi có thể sử dụng một text/GUI để xây dựng một truy vấn SELECT. Khi tôi lưu truy vấn, người dùng có thể nhấp vào truy vấn để thực hiện truy vấn và xem kết quả. ERP chạy trên đỉnh MS SQL Server 2000; nâng cấp phiên bản KHÔNG có trong thẻ ngay bây giờ. Tôi có thể viết bất kỳ bộ tính năng nào tôi cần bên ngoài ERP bằng bất kỳ ngôn ngữ nào tôi muốn, tôi đã làm điều này trong quá khứ, nếu các tính năng đảm bảo nó. Nhưng cộng đồng người dùng của tôi thấy dễ dàng hơn khi các tùy chỉnh của tôi có thể được thực hiện trong hệ thống ERP.
Truy vấn có thể tùy tiện phức tạp, nhưng các gói ERP xây dựng các SQL Select tuyên bố riêng của mình. Nội bộ để các hệ thống ERP biên soạn là một cái gì đó như thế này (đây chỉ là một phỏng đoán!):
"SELECT " + fieldList + " FROM " + tableListAndJoins + " WHERE " + whereCond
Các builder GUI giúp người dùng mới làm quen xây dựng fieldList và vân vân nhưng bạn có thể bỏ qua nó và viết các điều khoản trong văn bản miễn khi SQL hợp lệ khi kết hợp như trên. Tôi không thể tìm thấy một câu thần chú để chạy một thủ tục được lưu trữ như là một tác dụng phụ của một câu lệnh SELECT, cho dù đó là trong mệnh đề select, where khoản, vv Tôi thực sự không quan tâm làm thế nào tôi jailbreak hệ thống - một cuộc tấn công SQL injection ổn định sẽ ổn, miễn là nó không có nghĩa là tôi phải sửa đổi bảo mật của máy chủ sql bên dưới. Tôi đã nhìn UDFs, nhưng bạn không thể đặt một lệnh UPDATE thành một UDF vô hướng, và nó không có ý nghĩa để cố gắng sửa đổi sự trở lại của một UDF bảng (hoặc hiện nó?). Nếu bạn có thể CẬP NHẬT từ trong một VIEW thì tôi muốn xem một ví dụ, nhưng tôi nhận ra tôi có thể sử dụng một VIEW để tính toán các cột và đó không phải là giải pháp tôi đang tìm kiếm. Tôi đọc một tuyên bố gợi ý trực tuyến về việc có thể sử dụng một số loại XP_ để thực hiện điều này, nhưng như XP_ hoặc làm thế nào để làm điều đó, tôi không biết.
câu hỏi này không phải là một giải pháp, trong và của chính nó: Updating a table within a select statement
Nghiên cứu bổ sung FYI cho thấy chức năng CLR có thể đưa tôi đến đó nhưng chức năng CLR không có sẵn trong SQL 2000. – user130582