我有一个存储过程,我传递一个ID并希望返回传入ID后给出的选定ID。以下是我想出了...如何从存储过程返回ID?
CREATE PROCEDURE [dbo].[usp_GetAdministratorHistoryIDByAdministratorID]
@AdministratorID int,
@AdministrationHistoryID int output
AS
DECLARE @ERROR_SEVERITY int,
@MESSAGE varchar(1000),
@ERROR_NUMBER int,
@ERROR_PROCEDURE nvarchar(200),
@ERROR_LINE int,
@ERROR_MESSAGE nvarchar(4000);
begin try
SELECT AdministrationHistoryID
from [AdministrationHistory]
where AdministratorID = @AdministratorID
set @AdministrationHistoryID = AdministrationHistoryID
end try
BEGIN CATCH
SET @ERROR_SEVERITY = ISNULL(ERROR_SEVERITY(),'');
SET @ERROR_NUMBER = ISNULL(ERROR_NUMBER(),'');
SET @ERROR_PROCEDURE = ISNULL(ERROR_PROCEDURE(),'');
SET @ERROR_LINE = ISNULL(ERROR_LINE(),'');
SET @ERROR_MESSAGE = ISNULL(ERROR_MESSAGE(),'');
-- Test if the transaction is uncommittable.
IF (XACT_STATE()) = -1
BEGIN
--PRINT N'The transaction is in an uncommittable state. Rolling back transaction.'
ROLLBACK TRANSACTION;
END;
-- Test if the transaction is active and valid.
IF (XACT_STATE()) = 1
BEGIN
--PRINT N'The transaction is committable. Committing transaction.'
COMMIT TRANSACTION;
END;
SET @MESSAGE = 'Error Occured in Stored Procedure ' + cast(@ERROR_PROCEDURE as varchar(200)) +
'; Line Number ' + cast(@ERROR_LINE as varchar) +
'; Message: [' + cast(@ERROR_NUMBER as varchar) + '] - '
+ cast(@ERROR_MESSAGE as varchar(255))
RAISERROR(@MESSAGE, @ERROR_SEVERITY, 1);
END CATCH;
所以我想实现是通过传递AdministratorID
,它选择从AdministrationHistory
表AdministrationHistoryID
,我想返回AdministrationHistoryID
为int
。
我试图执行这一点,我得到一个错误
消息207,级别16,状态1,过程usp_GetAdministratorHistoryIDByAdministratorID,16号线
无效的列名称AdministrationHistoryID“。
我知道有一个AdministrationHistoryID
,因为它在表格中。
这完美地工作,它成功,返回AdministrationHistoryID,我会尽快接受,因为它让我 – Chris