Почему бы вам не вставить @Key
, как описано ниже:
Редактировать : изменено после @gbn ответа
Во-первых, SP должен выглядеть следующим образом (все о output
значении):
CREATE PROCEDURE sp_GeneratePassword
@param_in INT, @key_out NVARCHAR(10) OUTPUT
AS
BEGIN
-- here is your password generation
SET @key_out = 'your result'
END
GO
Обновление : изменено после объяснения @Deniskad
Ваш ИП:
CREATE PROCEDURE sp_GeneratePassword @Length int, @RandomID varchar(32) OUTPUT
AS
DECLARE @counter smallint,
@RandomNumber float,
@RandomNumberInt tinyint,
@CurrentCharacter varchar(1),
@ValidCharacters varchar(255),
@ValidCharactersLength int
SET @ValidCharacters = 'abcdefghijklmnopqrstuvwxyz0123456789'
SELECT @ValidCharactersLength = len(@ValidCharacters),
@CurrentCharacter = '',
@RandomNumber = 0,
@RandomNumberInt = 0,
@RandomID = ''
SET NOCOUNT ON
SET @counter = 1
WHILE @counter < (@Length + 1)
BEGIN
SET @RandomNumber = Rand()
SET @RandomNumberInt = Convert(tinyint, ((@ValidCharactersLength - 1) * @RandomNumber + 1))
SELECT @CurrentCharacter = SUBSTRING(@ValidCharacters, @RandomNumberInt, 1)
SET @counter = @counter + 1
SET @RandomID = @RandomID + @CurrentCharacter
END
GO
.. тогда триггер будет выглядеть так:
CREATE TRIGGER PartnersTrigger on Partners
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON
Declare @Key nvarchar(10);
EXEC sp_GeneratePassword 5, @Key OUTPUT
INSERT INTO Partners(Email,KeyInvitation)
SELECT Email, @Key
FROM inserted
END
GO