使用 SQL Server 2019 (v15.0.2000.5) 和 SQL Server Management Studio 15.0.18390.0。
我有一個帶有簡單作業的存盤程序:向表中添加值。
CREATE DATABASE productsdb;
GO
CREATE TABLE Products
(
Id INT PRIMARY KEY IDENTITY,
ProductName NVARCHAR(30) NOT NULL,
Manufacturer NVARCHAR(30) NOT NULL,
Price MONEY NOT NULL,
InStockAmount INT DEFAULT 0 NOT NULL
);
CREATE PROCEDURE AddProduct
@name NVARCHAR(30),
@manufacturer NVARCHAR(30),
@price MONEY,
@amount INT
AS
INSERT INTO Products(ProductName, Manufacturer, Price, InStockAmount)
VALUES (@name, @manufacturer, @price, @amount)
然后我執行程式:
EXEC AddProduct 'Galaxy C7', 'Samsung', 22000, 4
奇怪的魔法發生了:
(1 row affected)
(1 row affected)
(1 row affected)
... [32 times in total]
訊息 217,級別 16,狀態 1,程序 AddProduct,第 25 行 [批處理開始行 2]
超出最大存盤程序、函式、觸發器或視圖嵌套級別(限制 32)。
做的時候SELECT * FROM Products;,確實有 32 份相同的產品:
| ID | 名稱 | 制造商 | 數量 | 價格 |
|---|---|---|---|---|
| 143 | 銀河C7 | 三星 | 4 | 22000,00 |
| 144 | 銀河C7 | 三星 | 5 | 22000,00 |
| 145 | 銀河C7 | 三星 | 5 | 22000,00 |
| 146 | 銀河C7 | 三星 | 5 | 22000,00 |
| 147 | 銀河C7 | 三星 | 5 | 22000,00 |
| 148 | 銀河C7 | 三星 | 5 | 22000,00 |
| ... | ... | ... | ... | ... |
另外,我注意到金額不知何故從 4 變為 5。
任何想法可能是意外回圈的問題?
uj5u.com熱心網友回復:
我沒有分開批次。
在對程式進行編碼后,我決定通過執行來測驗它,但在同一批次中。這使得程序遞回(EXEC呼叫包含在程序中):
CREATE PROCEDURE AddProduct
@name NVARCHAR(30),
@manufacturer NVARCHAR(30),
@price MONEY,
@amount INT
AS
INSERT INTO Products (ProductName, Manufacturer, Price, InStockAmount)
VALUES (@name, @manufacturer, @price, @amount);
-- Here I didn't separate the batches, which was a mistake
EXEC AddProduct 'Galaxy C7', 'Samsung', 22000, 4;
添加GO評論已解決問題的宣告。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/397839.html
標籤:sql sql-server 查询语句
上一篇:如何更新表格的底部兩行
