[英]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.