我有一个表,如果不存在特定键,我必须在其中插入数据。我决定编写一个存储过程来插入数据。我想做的是:
- 创建一个存储过程。
- 使用存储过程插入一堆行。
- 删除存储过程。
我想在一个脚本文件中完成所有这些操作,这样就没有人知道存储过程的存在。
这是我所拥有的:
创造
CREATE PROCEDURE My_Proc(@key varchar(10))
AS
BEGIN
IF NOT EXISTS (SELECT * FROM [dbo].[My_Table] WHERE [key] = @key)
INSERT INTO [dbo].[My_Table] (key, created, modified)
VALUES (@key, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)
END
插入
EXECUTE My_Proc 99241
GO
EXECUTE My_Proc 99242
GO
EXECUTE My_Proc 99243
GO
降低
DROP PROCEDURE My_Proc
现在我在 SQL Server Management Studio 中右键单击我的数据库,单击New Query
并粘贴上面的查询。我得到以下输出:
(1 row(s) affected)
(1 row(s) affected)
Msg 217, Level 16, State 1, Procedure My_Proc, Line 9
Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).
(1 row(s) affected)
Msg 217, Level 16, State 1, Procedure My_Proc, Line 9
Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).
我无法弄清楚导致错误的原因。此外,当我突出显示EXECUTE
SSMS 上的特定命令时EXECUTE My_Proc 99241
,数据会被插入而不会出现任何错误。