このようなストアドプロシージャを使用して、データベースから1つのデータを取得しようとしています。C#コードがストアドプロシージャから値を返さないのはなぜですか?
USE [PSD]
GO
/****** Object: StoredProcedure [dbo].[ocso_GetNextDTEventNumber] Script Date: 1/19/2017 10:12:19 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ocso_GetNextDTEventNumber]
@EventNumber varchar(15) OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--increment last number by 1
UPDATE LU_EVENT_NUMBERS SET evn_last_number = evn_last_number + 1 where evn_year = Year(GetDate())
--return event number to caller
--Get the next event number for all incidents
SELECT @EventNumber = evn_comp_formatted_next_num from LU_EVENT_NUMBERS where evn_year = Year(GetDate())
END
私は、このSQLコード
DECLARE @NewEventNumber varchar(15)
Execute dbo.ocso_GetNextDTEventNumber
@EventNumber = @NewEventNumber OUTPUT;
Print convert(varchar(15),@NewEventNumber)
を使用してこの手順をテストし、私は私が期待する結果が得られます。さて、私はこのようなC#コードで結果を得ようとします。
私は空の文字列を返します。なぜこれは機能しないのですか?
あなたのパラメータはEventNumber' @ではなく 'NewEventNumber' – Crowcoder
' _cmd.CommandType = CommandType.StoredProcedure' @ 'のですか? –
ありがとう#Crowcoderを@EventNumberに変更したときにエラーが発生する{"プロシージャまたは関数 'ocso_GetNextDTEventNumber'はパラメータ '@EventNumber'が指定されていませんでした。}} – Perry