USE db_preprac_v1_2
GO
CREATE PROCEDURE sp_accessory
@repID AS SMALLINT
AS
- 創建表獲得當運行存儲過程
SELECT *
INTO #tempAcc
FROM accessory
GO
- 增加的臨時副本印刷
ALTER TABLE #tempAcc
ADD
Printed SMALLINT
GO
一個名爲列「必須聲明標量變量」的錯誤 - 設置該列中的所有值等於0
UPDATE #tempAcc
SET Printed = 0
GO
--Declare variables
DECLARE @RepName AS VARCHAR(30)
DECLARE @RepTel AS VARCHAR(10)
DECLARE @AccID AS SMALLINT
DECLARE @AccDesc AS VARCHAR(30)
DECLARE @AccPrice AS MONEY
DECLARE @Quantity AS SMALLINT
DECLARE @total AS MONEY = 0
--DECLARE @ID AS SMALLINT = @repID
/* 檢查代表編號是否有效,如果有效,則顯示代理銷售的所有配件 。如果無效,它將打印一條錯誤消息。 */
IF NOT EXISTS(SELECT rep_id FROM representative WHERE rep_id = @repID)
>BEGIN
PRINT 'Invalid representative id'
END
ELSE
BEGIN
SELECT @RepName = representative.rep_name, @RepTel = representative.rep_tel
FROM representative
WHERE @repID = representative.rep_id
PRINT '************************'
PRINT 'Accessory Details Report'
PRINT '************************'
PRINT ''
PRINT 'Representative Information'
PRINT ''
PRINT 'Reps Name: ' + @RepName
PRINT 'Reps Telephone: ' + @RepTel
PRINT ''
PRINT 'Accessories Sold by this Representative'
--Creates while循環通過行迭代
WHILE EXISTS (SELECT *
FROM #tempAcc
WHERE Printed = 0)
BEGIN
SELECT @AccID = MIN (acc_id)
FROM #tempAcc
WHERE Printed = 0
SELECT @AccDesc = accessory.acc_desc, @AccPrice = accessory.acc_price, @Quantity = accessory_detail.quantity
FROM accessory
JOIN accessory_detail
ON accessory.acc_id = accessory_detail.acc
JOIN representative
ON accessory_detail.rep = representative.rep_id
WHERE @repID = representative.rep_id
PRINT 'Accessory Desc: ' + @AccDesc
PRINT 'Accessory Price: ' + CAST(@AccPrice AS VARCHAR)
PRINT 'Quantity in Car: ' + CAST(@Quantity AS VARCHAR)
PRINT ''
UPDATE #tempAcc
SET Printed = 1
WHERE @AccID = acc_id
--Calculates飾品的合計值出售
SELECT @total = @total + @AccPrice
END
END
PRINT 'The total value of the accessories sold is: ' + CAST(@total AS VARCHAR)
PRINT 'Transaction Date: ' + CAST(GETDATE() AS VARCHAR)
GO
--to執行該過程,提供代表性的id的輸入值。
EXEC sp_accessory 3
GO
DROP PROCEDURE sp_accessory
GO
這是我所得到的,當我執行使用Microsoft SQL Server Management Studio中的代碼:
Msg 137, Level 15, State 2, Line 15
Must declare the scalar variable "@repID".
Msg 156, Level 15, State 1, Line 19
Incorrect syntax near the keyword 'ELSE'.
Msg 137, Level 15, State 2, Line 23
Must declare the scalar variable "@repID".
Msg 137, Level 15, State 2, Line 53
Must declare the scalar variable "@repID".
--------------------------------------------------------------------------**
固定我下面指出的錯誤後,現在我得到它成功地打印出我所期待的。你還有問題嗎? – 2012-04-25 21:41:18