2012-05-04 37 views
1

我有一个具有类型SYS_REFCUROR的OUT参数的存储过程。在执行过程之前,我从C#中添加除OUT参数以外的所有参数。但是当我执行程序时,我得到“错误的数量或类型的参数”错误。我的问题是,如果我不打算为该参数分配任何值,为什么我必须将其添加到我的参数集合中?C# - 我必须将参数添加到参数集合

+0

检查答案..... –

回答

1

您需要添加参数,因为在执行存储过程之后,sql的out参数值将存储在代码中提供的out参数中,您可以在稍后执行时使用该参数。

如果你想省略传递出的参数,然后指定一个默认值输出参数,这将解决您的问题。

例如:

CREATE PROCEDURE MyTest 
    @Data1 int 
    ,@Data3 int = null output 

如果你这样做如上,那么你就需要通过代码来传递输出参数,它会隐藏你所得到的错误。

+0

我们不能将默认值添加到Oracle中的OUT和IN OUT参数。不了解SQL Server。 –

+0

@MikeJM - 与SQL Server,你可以这样做,但甲骨文我没有想法..如果它不是比你需要从你加入了prameter代码中没有选项留 –

+0

但是且慢。如果我没有在程序中为我的OUT参数指定任何值,该怎么办?因为我OUT参数是SYS_REFCURSOR这可能是这种情况。我只打开游标一些选择语句,如果我的V_TYPE参数为0,否则我做插入,更新或者在V_TYPE的值删除,所以我不分配给OUT参数的任何值。 –