SQL Server에서 출력 값을 가져 오는 악마가 있습니다. 여기 저장 프로 시저 및 저장 프로 시저를 통해 SQL Server에서 출력 매개 변수를 반환합니다. C#
내 저장 프로 시저입니다 :ALTER PROCEDURE [dbo].[Insert_UnknownCustomer_Quote_Document]
-- Add the parameters for the stored procedure here
@NewDocumentFileName nvarchar(100),
@NewDocumentWordCount int,
@NewQuoteAmount money,
@NewQuoteNumber int OUTPUT = 0
AS
DECLARE @Today datetime
SELECT @Today = GETDATE()
BEGIN TRANSACTION
BEGIN TRY
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO dbo.Customers(DateAdded)
VALUES (@Today)
INSERT INTO dbo.Quotes(CustomerID, QuoteAmount, QuoteDate)
VALUES (@@IDENTITY, @NewQuoteAmount, @Today)
SELECT @NewQuoteNumber = @@IDENTITY
INSERT INTO dbo.DocumentFiles(QuoteNumber, DocumentFileName, DocumentFileWordCount)
VALUES (@NewQuoteNumber, @NewDocumentFileName, @NewDocumentWordCount)
-- Return quote number
RETURN @NewQuoteNumber
END
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
PRINT 'Transaction rolled back.'
END CATCH
그리고 여기 내 C#입니다 :
Procedure or function 'Insert_UnknownCustomer_Quote_Document' expects parameter '@NewQuoteNumber', which was not supplied.
내가 복용 시도 : 여기
SqlParameter returnQuoteNumber = new SqlParameter("@NewQuoteNumber", SqlDbType.Int);
returnQuoteNumber.Direction = ParameterDirection.ReturnValue;
newSQLCommand.Parameters.Add(returnQuoteNumber);
내가 지금 수신하고있는 오류입니다 @NewQuoteNumber는 처음부터 빠져 나와서 DEC을 사용하여 AS 다음에 배치하지만 오류가 발생합니다. 당신이 반환을 사용하는 경우에 당신이하지
ParameterDirection.ReturnValue
또한
반환 부분에서 그것을 가지고 ParameterDirection.Output
을 원하는
참고 :'SCOPE_IDENTITY()가''@@ IDENTITY'보다 훨씬 현명한 선택이 될 것입니다. – HABO