[英]Call stored procedure from c#
I created a test application with Thread and call stored procedure. 我使用Thread创建了一个测试应用程序,并调用了存储过程。 If I call stored procedure from console application stored procedure executes, but does not insert values into test table.
如果从控制台应用程序调用存储过程,则存储过程会执行,但不会将值插入测试表中。 I'm using a
DbContext
. 我正在使用
DbContext
。 If I call procedure in SQL Server Management Studio then value adds to test table. 如果我在SQL Server Management Studio中调用过程,那么值会添加到测试表中。 Where is error?
错误在哪里?
My console application for thread call stored procedure: 我的控制台应用程序用于线程调用存储过程:
static void Main(string[] args)
{
ModelContext context = new ModelContext();
Thread t = new Thread(() => ThreadTestProcedure(context));
t.Start();
}
Thread call method: 线程调用方法:
private static void ThreadTestProcedure(ModelContext сontext)
{
try
{
context.RunTestProcedure(1000, "Test")
}
catch (Exception ex)
{
}
Console.WriteLine();
Console.ReadKey();
}
My stored procedure for insert values to test table: 我向测试表插入值的存储过程:
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
Your stored procedure has an infinite loop WHILE 1=1 ??? 您的存储过程有一个无限循环,WHILE 1 = 1 ??? remove that.
删除。
Remove WHILE 1=1
from your stored procedure. 从存储过程中删除
WHILE 1=1
。 It goes in infinite loop. 它进入无限循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.