我使用Thread创建了一个测试应用程序并调用了存储过程。如果我从控制台应用程序执行存储过程调用存储过程,但不会将值插入测试表。我正在使用DbContext
。如果我在SQL Server Management Studio中调用过程,则值将添加到测试表。哪里出错?
我的线程调用存储过程的控制台应用程序:
static void Main(string[] args)
{
ModelContext context = new ModelContext();
Thread t = new Thread(() => ThreadTestProcedure(context));
t.Start();
}
线程调用方法:
private static void ThreadTestProcedure(ModelContext сontext)
{
try
{
context.RunTestProcedure(1000, "Test")
}
catch (Exception ex)
{
}
Console.WriteLine();
Console.ReadKey();
}
我对测试表的插入值的存储过程:
CREATE PROCEDURE TestProcedure
@Int1 INT,
@SrtingValue nvarchar(250)
AS
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[ASSIGNMENTS_DELETED]')
AND type in (N'U'))
BEGIN
CREATE TABLE ASSIGNMENTS_DELETED
(ID INT PRIMARY KEY (ID) identity(1,1),
Assigment int,
StringValue nvarchar(250)
)
END
WHILE 1=1
BEGIN
BEGIN TRY
BEGIN TRANSACTION
insert into ASSIGNMENTS_DELETED
select @Int1, @SrtingValue
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION
RAISERROR ('it broke', 16, 1)
END CATCH
END
答案 0 :(得分:3)
您的存储过程有一个无限循环WHILE 1 = 1 ???删除它。
答案 1 :(得分:2)
从存储过程中删除WHILE 1=1
。它进入无限循环。