我有一個存儲過程需要一個product_id並返回有關產品的一些數據。我想做一個查詢或過程,將這個存儲過程映射到「select * from products」查詢。有沒有辦法做到這一點?Sql服務器 - 「地圖」功能?
1
A
回答
2
這聽起來像你需要一個用戶定義的功能,而不是一個存儲過程。用戶定義的函數可以作爲查詢的一部分進行評估(例如,SELECT id,myFunc(id)AS'Product Info'FROM Products)。
見CREATE FUNCTION在SQL Server BOL
順便說一句,存儲的特效被允許是非確定性的,而UDF是不是。如果您當前的存儲過程是非確定性的,那麼您需要重構/重新設計才能創建可包含在查詢中的UDF。
0
您的存儲過程將product_id作爲參數,並返回單個產品的信息。你想要做的是在查詢中使用該存儲過程,以便獲得一組結果,是否正確?
要做到這一點,你必須要麼使用一個視圖(如果它足夠簡單,這樣做),或更可能改寫存儲過程作爲一個用戶定義的函數。如果你有一個名爲GetInfoByProductId(@product_id)UDF返回單一產品一堆信息,那麼你可以寫,
select product_id, dbo.GetInfoByProductId(product_id) from products where ...
0
我想你可以定義一個內嵌表值函數,並在使用它笛卡爾產品風格JOIN
針對您的products
表。這種連接會模仿你所說的「地圖」行爲。
SELECT d.*
FROM products p JOIN getProductData(p.product_id) d
0
另一種方法可以創建,簡化了存儲過程(S)和可以重複使用跨兩個不同的程序集的視圖。
您的觀點將負責完成所有聯接並將主要和支持列彙總在一起。
您可以有一個存儲過程,它接收product_id並返回該產品的記錄集。這個過程會像select * from [viewname]那樣product_id = @product_id。
其他程序將返回所有。這個過程看起來像select * from [viewname]。
相關問題
- 1. SQL服務器CONCAT功能
- 2. SQL服務器替換功能#2
- 3. SQL服務器 - 緩存內的功能
- 4. SQL服務器相當於WM_CONCAT功能
- 5. 理解DATEDIFF()的SQL服務器功能
- 6. SQL服務器電源功能discrepanacy?
- 7. SQL服務器 - 功能的程序
- 8. SQL服務器電源功能
- 9. SQL服務器LAST一樣的功能
- 10. Sql服務器功能運行緩慢
- 11. SQL服務器:透視功能錯誤
- 12. 服務器功能 - XMPP
- 13. XMPPFramework服務器功能
- 14. 服務器上的AJAX成功功能
- 15. SQL服務器輪功能不能正常工作
- 16. T-SQL跨服務器功能執行 - 是否有SQL服務器中的配置來執行跨服務器功能?
- 17. Nativescript地圖服務器地圖
- 18. 地圖功能
- 19. SQL服務器,視圖
- 20. 降級地圖服務器
- 21. 地圖服務地圖服務
- 22. 地圖功能
- 23. 服務器標記中的呼叫服務器功能
- 24. SQL服務器從地方到鏈接的服務器錯誤
- 25. SQL服務器
- 26. 與服務功能
- 27. SQL服務器
- 28. SQL服務器
- 29. 圖像服務器性能
- 30. 功能,從地圖
JOIN不允許您引用'p',您必須使用APPLY。 – 2010-01-13 21:34:24
謝謝@Remus,我不是一個普通的微軟開發人員。 – 2010-01-13 21:35:42