SQL中超出最大嵌套级别(限制32)时出错

时间:2018-03-26 09:14:08

标签: sql-server tsql stored-procedures

我想编写一个插入一行的过程,以便自动处理nordre值:如果已经有n行nordre,则新行将有nordre n + 1,否则它将具有数字1。 / p>

但是当我执行我的程序pr_insert_lignes时,我有这个错误:

  

超出了存储过程,函数,触发器或视图的最大嵌套级别(限制32)。

我使用第二个程序pr_getprix,它可以工作并恢复值prix以计算百分比。

CREATE PROCEDURE pr_getprix (@numprod int, @prix money OUTPUT) AS
SELECT @prix = pxunit
FROM produit
WHERE noprod = @numprod

这是我的治疗方法。

CREATE PROCEDURE pr_insert_lignes(@nocom int, @noprod int, @nordre int, 
@qtecom int, @pourcentage money) AS DECLARE @prix money 

EXECUTE pr_getprix @noprod, @prix output

if exists (select nordre from ligne)      
BEGIN
     INSERT INTO ligne (nocom, nordre, qtecom, puacc, noprod) VALUES 
     (@nocom, @nordre + 1, @qtecom, @prix*@pourcentage / 100, @noprod) 
END 
ELSE BEGIN
     INSERT INTO ligne (nocom, nordre, qtecom, puacc, noprod) VALUES 
     (@nocom, 1, @qtecom, @prix*@pourcentage / 100, @noprod) 
END



create table PRODUIT
(
Noprod int primary key,
Pxunit smallmoney,
Qtestk int check(Qtestk > 0)
)

create table LIGNE
(
Nocom int,
Nordre int,
Qtecom int,
Puacc smallmoney,
Noprod int,
Montligne as Puacc* Qtecom,
primary key(Nocom, Nordre),
CONSTRAINT FKNOCOM FOREIGN KEY (Nocom) REFERENCES COMMANDE(Nocom),
CONSTRAINT FKNOPROD FOREIGN KEY (Noprod) REFERENCES PRODUIT(Noprod)
)

1 个答案:

答案 0 :(得分:0)

我无法找到指向您的MSDN链接,但是,根据Ray Rankins释放的SQL Server 2012,Paul T. Bertucci,Chris Gallelli,Alex T. Silverstein:

A stored procedure can call itself up to the maximum nesting level of 32