2013-03-21 114 views
0

因爲這不能像做:從MySQL存儲過程中選擇

select * from (call my_stored_procedure(params)); 

是否有上述聲明的任何替代方案?

+1

爲什麼不把所有的查詢裏面存放程序? – 2013-03-21 09:08:17

+0

是的,我甚至試圖做到這一點。我無法操作查詢爲下一個查詢生成的結果集。 – hsuk 2013-03-21 10:27:21

+0

你需要什麼樣的操作?兩種答案都適合你的情況。函數似乎是某種'命名'代碼的和平,每次調用函數時都會執行查詢。從SP插入需要臨時表格或表格變量,執行一個並使用數據進一步操作。哪一個更適合你的「操縱」要求?只是爲了澄清兩個正確的答案哪一個更合適:-) – Serg 2013-03-24 07:50:30

回答

1

過程可以返回多個結果集,每個結果集都有自己的模式。它不適合在SELECT語句中使用。

用戶定義的函數可能是一個選項。這裏有一個例子:

CREATE FUNCTION CubicVolume 
-- Input dimensions in centimeters 
(@CubeLength decimal(4,1), @CubeWidth decimal(4,1),@CubeHeight decimal(4,1)) 
    RETURNS decimal(12,3) -- Cubic Centimeters. 
    AS 
    BEGIN 
    RETURN (@CubeLength * @CubeWidth * @CubeHeight) 
END 

更多此鏈接:http://msdn.microsoft.com/en-us/library/aa175085%28SQL.80%29.aspx

0

創建臨時表變量並插入SP值到它,如:

Declare @t table 
(
    --column numbers will be equals to the numbers return by SP 
) 
Insert Into @t 
call my_stored_procedure(params) 

Select * From @t