автоматически генерировать номер счета в c #, используя хранимую процедуру в dapper - PullRequest
0 голосов
/ 06 июня 2019

Я хочу сгенерировать индивидуальный номер транзакции, например (INV2019-12-000001) и создать следующий номер счета-фактуры, сохранив данные с помощью хранимой процедуры.

1 Ответ

0 голосов
/ 06 июня 2019

Вы можете создать объект последовательности в вашей базе данных, используя код SQL, подобный следующему:

CREATE SEQUENCE Test.CountBy1TestSequence  
    START WITH 1  
    INCREMENT BY 1 ;  
GO  

Это можно затем вызвать с помощью SQL:

SELECT NEXT VALUE FOR Test.CountBy1TestSequence;  

Или вызывается через dapper с помощью:

using (var conn = new SqlConnection(ConnectionString))
            {
                String sql = @"SELECT NEXT VALUE FOR Test.CountBy1TestSequence";

                var result = conn.ExecuteScalar<Int>(sql);

                // Do whatever with the result    
            }

Используя значение последовательности, вы можете затем передать его хранимой процедуре в вашей базе данных, используя dapper с кодом, подобным следующему:

 var p = new DynamicParameters();
 p.Add("@inputInvoiceNumber", $"INV{DateTime.Now.Year}-{DateTime.Now.Month}-{result}, DbType.String, ParameterDirection.Input);
 p.Add("@retVal", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue); // If there is any return

 cnn.Execute("spTestProc", p, commandType: CommandType.StoredProcedure);

Где @inputInvoiceNumber и @retVal - параметры вашей хранимой процедуры.

...