gpt4 book ai didi

c# - 当没有使用 Enterprise lib 5.0 提交任何值时,可选输出参数会导致 InvalidOperationException

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:17 24 4
gpt4 key购买 nike

我在使用 Enterprise Library 5.0 的 Microsoft Sequel Server 2008 中遇到输出参数问题

我正在从我的代码(在 C# 中)调用一个过程,它工作正常,直到我将一个可选的输出参数添加到存储过程以跟踪反馈。

从我的代码调用过程的代码:

string insertCommand = insertParams[0]; //the stored proc command
Object[] parameterValues = insertParams.Skip(1).ToArray(); //The parameters
int feedback = 1;
IDataReader reader = localDB.ExecuteReader(insertCommand, parameterValues); //ERROR
if (reader.Eead()){
//stuf

在调试过程中,parameterValues 包含一个对象。我得到的错误是

[System.InvalidOperationException] = {“参数的数量与存储过程的值的数量不匹配。”

我的存储过程是这样的:

ALTER PROCEDURE [dbo].[BS_GetDetails] 
@BusStop_ID INT,
@FEEDBACK_CODE INT=NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;

SELECT @FEEDBACK_CODE = 200
//Do lots of other non-related things, mostly select statements

当我只使用一个参数从数据库内部调用存储过程时,它工作正常,但是当我添加额外的可选输出参数后,我的代码出现错误

我可以创建第二个存储过程来调用第一个,但这似乎是一个 hacky 解决方案,我怀疑我在这里遗漏了一些微妙的东西......

最佳答案

在执行调用之前,您是否查看过 parameterValues 对象?我只使用我需要的键/值对完成了可选参数。

cmd.Parameters.Add( new SqlParameter("@BusStopID", myBusStopID));

关于c# - 当没有使用 Enterprise lib 5.0 提交任何值时,可选输出参数会导致 InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9684973/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com