2013-06-03 71 views
-1

我有一个错误,我找不到此过程失败的原因。我只知道它做了一些我不知道的事情。有没有人有一个想法是什么? :|更新存储过程 - SQL Server 2012

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; 

EXEC:

EXEC [dbo].updateAccountPersonJob 
     @department = N'Facultatea de Matematica si Informatica', 
     @description = N'Teacher', 
     @personID = N'16', 
     @name = N'Dummy', 
     @surname = N'BarFOO', 
     @email = N'[email protected]', 
     @username = N'dummy', 
     @password = N'd', 
     @status = N'Teacher' 

错误:

Conversion failed when converting the nvarchar value 'director' to data type int.

+0

如果运行'SELECT ID乔布斯WHERE部门= @department和描述= @ description'您能得到什么结果? – Taryn

+0

打印了一个有效的ID –

+0

你可以用两个表的表结构来编辑你的问题吗?你在桌上有没有触发器? – Taryn

回答

3

要检查针对password柱是nvarchar的personid(整数)列。更新您查询使用正确的参数或列和你的代码应工作