Je souhaite lire Scope_Identity
via la variable de sortie '@RoleID' d'où j'affecte la valeur de l'identité de la portée.Comment lire l'identité de l'étendue en C# à partir de la procédure stockée exécutée
C#:
private static long createNewRoleInsert(ADB.Model.RolesModel roleModelObj, MSSQL sql)
{
bool killConnection = Utils.getConnection(ref sql);
long returnValue = 0;
try
{
sql.SetSProc("[dbo].[p_Role_dfn_createNew]");
sql.AddParam("@Title", roleModelObj.Title);
sql.AddParam("@Description", roleModelObj.Description);
sql.AddParam("@CreatedDate", roleModelObj.CreatedDate);
var RoleID = sql.ExecuteNonQuery();
if(RoleID!=0 && RoleID>0)
{
returnValue = RoleID;
}
}
finally
{
if (killConnection)
sql.Dispose();
}
return returnValue;
}
procédure stockée:
SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[p_Role_dfn_createNew]
@Title nvarchar(250),
@Description nvarchar(MAX) = NULL,
@CreatedDate DateTime,
@RoleID bigInt OUTPUT
AS
SET NOCOUNT ON;
SET XACT_ABORT ON
DECLARE @l_object AS SYSNAME = OBJECT_NAME(@@PROCID),
@l_error_msg AS NVARCHAR(2000)
BEGIN TRY
BEGIN TRAN
INSERT INTO [adb_TestDb].[dbo].[Role] ([Title], [Description], [CreatedDate])
VALUES (@Title, @Description, @CreatedDate)
COMMIT TRAN
SET @RoleID = SCOPE_IDENTITY();
RETURN @RoleID
END TRY
BEGIN CATCH
-- rollback any open/uncomitted transactions
IF XACT_STATE() IN (-1, 1) ROLLBACK TRANSACTION
-- return an error containing the object, error number and error description
SELECT @l_error_msg = 'Error number : ' + CAST(ERROR_NUMBER()AS VARCHAR) + '. ' + ERROR_MESSAGE()
RAISERROR (@l_error_msg,16,1)
END CATCH
est 'MSSQL' un alias? –
yes ............. – toxic
De quelle classe est-ce un alias? c'est-à-dire quel est le type réel de 'sql'? –