簡體   English   中英

選擇和更新使用臨時表存儲過程中的select語句結果

[英]Select and Update Using the select statement result in temp table stored procedure

ALTER PROCEDURE sp_updateInward
    (@bl_num VARCHAR(30),
     @cg_type VARCHAR(10))
AS
    CREATE TABLE #temp_select
    (
        qty int,
        wght decimal(8,2),
        vol decimal(8,2) 
    )

    INSERT INTO #temp_select
        SELECT 
            CASE 
               WHEN @cg_type = 'BB' 
                  THEN SUM(ISNULL(CAST(t1.qty AS FLOAT), 0)) 
               ELSE 1 
            END AS qty,
            SUM(ISNULL(CAST(t1.wght AS FLOAT), 0)) AS wght,
            SUM(ISNULL(CAST (t1.vol AS FLOAT), 0)) AS vol
        FROM 
            godown_storage t1
        INNER JOIN 
            ccosbl t2 ON t2.id = t1.blso_id
        WHERE
            t2.bl_num = @bl_num

    UPDATE ccosblitem
    SET qty = #temp_select.quantity, 
        wght = #temp_select.weight, 
        vol = #temp_select.volume
    FROM ccosblitem t3
    INNER JOIN ccosbl t4 ON t4.id = t3.master_id 
    WHERE t4.bl_num = @bl_num

    SELECT * FROM ccosblitem

我需要從select語句更新ccosblitem 我在存儲過程中執行它並創建臨時表。 我嘗試使用declare變量,但它提示錯誤說“AS”不正確。

更換

從:

  ALTER PROCEDURE sp_updateInward
(
    @bl_num VARCHAR(30),
    @cg_type VARCHAR(10)
)
AS

至:

ALTER PROCEDURE sp_updateInward @bl_num VARCHAR(30),@cg_type VARCHAR(10)
AS

begin
//your action here
end

您的更新聲明需要更改。 您在SET子句中使用臨時表列而不使用FROM子句中的臨時表。 另外,對於連接目的,您需要在臨時表中具有ID列,並且需要在insert語句中填充相同的列。 以下是您的代碼的更改。

CREATE TABLE #temp_select
    (
        id int,
        qty int,
        wght decimal(8,2),
        vol decimal(8,2) 
    )

SELECT T1.ID, case....

UPDATE ccosblitem
    SET qty = #temp_select.quantity, 
        wght = #temp_select.weight, 
        vol = #temp_select.volume
    FROM ccosblitem t3
    INNER JOIN #temp_select t4 ON t4.id = t3.master_id 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM