我想编写一个插入一行的过程,以便自动处理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)
)
答案 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