[英]Call stored procedure from c#
我使用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
您的存儲過程有一個無限循環,WHILE 1 = 1 ??? 刪除。
從存儲過程中刪除WHILE 1=1
。 它進入無限循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.