特定のキーが存在しない場合にデータを挿入する必要があるテーブルがあります。データを挿入するためのストアドプロシージャを作成することにしました。私がやりたいことは:
- ストアドプロシージャを作成します。
- ストアドプロシージャを使用して、一連の行を挿入します。
- ストアドプロシージャを削除します。
ストアドプロシージャが存在することを誰も知らないように、これらすべてを1つのスクリプトファイルで実行したいと思います。
これが私が持っているものです:
作成
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
、データがエラーなしで挿入されます。