I have one table and I am willing to fill two columns with values generated using other column value using function.
NOTE: I am working with a .mdf
file in Visual Studio and not SQL Server.
Like if EmployeeName is 'XYZ' then Password will be 'XYZ@123' and mailid will be 'XYZ@gmail.com'
Here is the procedure
CREATE FUNCTION [dbo].[fnTempSetAllEmployeeMailIdAndEmployeePassword]()
RETURNS @OutputTable TABLE
(
EmployeeName NVARCHAR(250),
TempEmployeeMailId NVARCHAR(250),
TempEmployeePassword NVARCHAR(250)
)
AS
BEGIN
DECLARE @Initialiser INT = 1, @NumberOfRowsInTable INT, @TempEmployeeId INT, @TempEmployeeName NVARCHAR(250);
SELECT @NumberOfRowsInTable = COUNT(*)
FROM tbEmployee;
WHILE(@Initialiser <= @NumberOfRowsInTable)
BEGIN
SELECT
@TempEmployeeName = [EmployeeName],
@TempEmployeeId = [EmployeeId]
FROM
(SELECT
ROW_NUMBER() OVER(ORDER BY [EmployeeId] ASC) AS ROwNumber,
[EmployeeId], [EmployeeName]
FROM
tbEmployee) AS TempTable
WHERE
RowNumber = @Initialiser;
UPDATE tbEmployee
SET [EmployeeMailId] = LOWER(@TempEmployeeName) + '@gmail.com',
[EmployeePassword] = LOWER(@TempEmployeeName) + '@123'
WHERE [EmployeeId] = @TempEmployeeId;
SET @Initialiser = @Initialiser + 1;
END
INSERT @OutputTable
SELECT [EmployeeName], [EmployeeMailId], [EmployeePassword]
FROM tbEmployee;
RETURN
END
The problem is the above statements works when I execute in new query file.
But when I put in function and try to update it. I will not save and says something went wrong when executing.
But saves when I comment the UPDATE
command.
Is it problem with Update being in while loop?