2013-07-24 94 views
0

我有這樣一個存儲過程:基於在獲取keyLocation按鍵得到一個存儲過程值導致另一個存儲過程

alter procedure [dbo].[fetchkey] 
@locid int =null 
as 
begin 
select t.TBarcode,t.Status 
from Transaction_tbl t 
left join EmployeeMaster_tbl e on t.Ecode=e.Ecode where Locid=5 
end 

我的輸出

TBarcode    Status 
-------------------- ----------- 
57173621345   0 
57173865238   1 
57181456325   2 
57182756600   3 
58125323124   4 
----------------------------------- 

我還有一個存儲過程狀態:

ALTER procedure [dbo].[Keylocation] 
@Carid nvarchar(50) 
as 
begin 
SET NOCOUNT ON; 
SELECT 
     t.Status, 
     k.HBarcode, 
     te.UniqueName, 
    COALESCE(e.Ename, e1.Ename) AS EName 
FROM Transaction_tbl t 
     left JOIN UserMaster_tbl u 
      ON u.uid = t.PAICID 
      left join EmployeeMaster_tbl e on e.ECode=u.Ecode 
      AND t.Status = 0 
     LEFT JOIN EmployeeMaster_tbl e1 
      ON e1.ECode = t.ECode 
      AND t.Status = 1 or e1.Ecode=t.DelEcode and t.Status=4 
      left Join KHanger_tbl k 
      on t.transactID=k.transactid 
      and t.Status in(2,3) 
      left JOIN Terminals_tbl te ON k.tid = te.tid 

WHERE t.TBarcode = @Carid 
end 

我出去把這樣的:

Status  HBarcode   UniqueName    EName       
3   001    Key Room-1    NULL 

這是3.in我的第一個存儲過程,我想在此基礎上result.my有望走出把獲得多一個列的狀態結果:

TBarcode    Status key location 
-------------------- ----------- 
57173621345   0   with Employee(Ename Value) 
57173865238   1   with Paic(Ename value) 
57181456325   2   UniqueName value(HBarcode value)      
57182756600   3   UniqueName value (HBarcode value) 
58125323124   4   with driver(Ename Valu) 

有沒有辦法做到這一點?有新的存儲過程。有沒有什麼辦法可以創建函數並將這個結果調用到我的存儲過程,如果有人知道請幫我

+0

簡單的解決方案:讓另一個存儲過程合併(加盟) – Alex

+0

你可以做同樣的在你的最後一個問題HTTP查詢://計算器。 com/questions/17802387/write-stored-procedure-inside-the-other-stored-procedure – bummi

+0

sir ..我是新的存儲過程..你可以請一次顯示.. – user2603688

回答

0

看看錶值函數,這可以用來輸出輸出的一個函數作爲另一個存儲過程的輸入。 這是解釋它的最簡單的鏈接之一,請看這裏Table Valued Functions

請看下面你的情況。我不確定應該做什麼加入,但如果你看,並瞭解它是如何寫的,你一定會明白。

CREATE FUNCTION FetchKEY(@locid int)  
RETURNS @keydetails TABLE (TbarCode int NOT NULL, Status int NOT NULL) AS 
    BEGIN 
    INSERT INTO @person (TbarCode,Status) select t.TBarcode,t.Status from 
    Transaction_tbl t left join EmployeeMaster_tbl e on t.Ecode=e.Ecode 
    where [email protected]  
    RETURN; 
    END; 
Go 

所以,你的存儲過程會是這樣

ALTER procedure [dbo].[Keylocation] @Carid nvarchar(50) as begin 
SET NOCOUNT ON; 
SELECT 
      t.Status,k.HBarcode, 
      te.UniqueName, 
     COALESCE(e.Ename, e1.Ename) AS EName FROM Transaction_tbl t 
      left JOIN UserMaster_tbl u 
       ON u.uid = t.PAICID 
       left join EmployeeMaster_tbl e on e.ECode=u.Ecode 
       AND t.Status = 0 
      LEFT JOIN EmployeeMaster_tbl e1 
       ON e1.ECode = t.ECode 
       AND t.Status = 1 or e1.Ecode=t.DelEcode and t.Status=4 
       left Join KHanger_tbl k 
       on t.transactID=k.transactid 
       and t.Status in(2,3) 
       left JOIN Terminals_tbl te ON k.tid = te.tid 
     **Inner Join FetchKEY F on F.TbarCode = k.HBarcode**  
    WHERE t.TBarcode = @Carid 
end 
+0

先生..你可以顯示一次.. – user2603688

+0

我已經更新了我的答案 – lloydom

+0

我會檢查並讓你知道 – user2603688

相關問題