-1

エラーが発生し、この手順が失敗した理由がわかりません。私が知っていることは、私が手がかりのないことをすることだけです。誰がこれが何であるか考えていますか? :|

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 [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'

エラー:

nvarchar 値 'director' をデータ型 int に変換するときに変換に失敗しました。

4

1 に答える 1

3

nvarchar であるpersonid列に対して (整数) 列をチェックしています。password正しいパラメーターまたは列を使用するようにクエリを更新すると、コードが機能するはずです

于 2013-06-03T20:24:41.817 に答える