更新存储过程-SQL Server 2012
我有一个错误,我找不到这个过程失败的原因。我所知道的只是它做了一些我一无所知的事情。有人知道这是怎么回事吗|更新存储过程-SQL Server 2012,sql,stored-procedures,sql-server-2012,Sql,Stored Procedures,Sql Server 2012,我有一个错误,我找不到这个过程失败的原因。我所知道的只是它做了一些我一无所知的事情。有人知道这是怎么回事吗| ALTER PROCEDURE [dbo].[updateAccountPersonJob] @department nvarchar(50), @description nvarchar(50), @personID int, @name nvarchar(50), @surname nvarchar(50), @email nvarc
ALTER PROCEDURE [dbo].[updateAccountPersonJob]
@department nvarchar(50),
@description nvarchar(50),
@personID int,
@name nvarchar(50),
@surname nvarchar(50),
@email nvarchar(50),
@username nvarchar(50),
@password nvarchar(50),
@status nvarchar(50)
AS
BEGIN TRANSACTION
DECLARE @missionID int, @jobID int;
BEGIN TRY
SET @jobID = (SELECT id FROM Jobs
WHERE department = @department AND description = @description)
UPDATE Persons
SET name = @name, surname = @surname, email = @email, jobID = @jobID
WHERE Persons.id = @personID
UPDATE Accounts
SET Username = @username, Password = @password, Status = @status
WHERE Accounts.Password = @personID
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber
,ERROR_SEVERITY() AS ErrorSeverity
,ERROR_STATE() AS ErrorState
,ERROR_PROCEDURE() AS ErrorProcedure
,ERROR_LINE() AS ErrorLine
,ERROR_MESSAGE() AS ErrorMessage;
BEGIN IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
PRINT('ROLLBACK')
END
END CATCH;
IF @@TRANCOUNT > 0
COMMIT TRANSACTION;
执行官:
错误:
将nvarchar值“director”转换为数据类型int时,转换失败
您正在检查
personid
(整数)列与password
列,该列为nvarchar。更新您的查询以使用正确的参数或列,如果运行SELECT id FROM Jobs WHERE department=@department and description=@description
,您的代码应该可以运行,结果是什么?您能用两个表的表结构编辑您的问题吗?表上有触发器吗?@BogdanM.,这可能与您遇到的错误无关,您正在检查personid和密码列OMG。。谢谢你,请以Response的形式发布,我很忙,看起来我很累…错误消息还暗示你正在以明文形式存储密码。这很糟糕。至少你应该对它们进行散列/盐析并比较散列。
EXEC [dbo].updateAccountPersonJob
@department = N'Facultatea de Matematica si Informatica',
@description = N'Teacher',
@personID = N'16',
@name = N'Dummy',
@surname = N'BarFOO',
@email = N'bar@ba.com',
@username = N'dummy',
@password = N'd',
@status = N'Teacher'