簡體   English   中英

從C#調用存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM