有没有一种方法可以使存储过程参数在C#中同时作为输入和输出?

有没有一种方法可以使存储过程参数在C#中同时作为输入和输出?,c#,sql,sql-server,C#,Sql,Sql Server,我正在写一个用Delphi开发的程序,我想把它编码成C。老开发人员使用了一个存储过程,我想像旧版本一样使用它。在SP的参数中,有一些输出参数,但其中一个参数也用作输入参数。 所以我必须给它设置一个值,并得到输出值 我试着这样编写代码: int MyValue = 4; SqlCommand MyCom = new SqlCommand(); MyCom.Connection = (SomeConnectionObject); MyCom.CommandType = CommandType.Sto

我正在写一个用Delphi开发的程序,我想把它编码成C。老开发人员使用了一个存储过程,我想像旧版本一样使用它。在SP的参数中,有一些输出参数,但其中一个参数也用作输入参数。 所以我必须给它设置一个值,并得到输出值

我试着这样编写代码:

int MyValue = 4;
SqlCommand MyCom = new SqlCommand();
MyCom.Connection = (SomeConnectionObject);
MyCom.CommandType = CommandType.StoredProcedure;
MyCom.CommandText = "MySP";

MyCom.Parameters.AddWithValue("@Parameter1_Output", MyValue);
MyCom.Parameters["@Parameter1_Output"].Direction = ParameterDirection.Output;

在执行的查询(探查器)中,设置为参数的值为0,而我将其设置为4。

好的,如果我们查看一下
enum
,我们会发现

字段

InputOutput
3
该参数可以输入和输出

(斜体是我的)。这就是为什么

MyCom.Parameters["@Parameter1_Output"].Direction = ParameterDirection.InputOutput;

好吧,如果我们看一下
enum
我们会发现

字段

InputOutput
3
该参数可以输入和输出

(斜体是我的)。这就是为什么

MyCom.Parameters["@Parameter1_Output"].Direction = ParameterDirection.InputOutput;

ParameterDirection.InputOutput
?这一个应该是输入而不是输出,正如Dmitry所说的检查
ParameterDirection.InputOutput
确实有。你差点就成功了。选中“在已执行的查询(探查器)中,设置为参数的值为0,而我已将其设置为4”。如果您说它是
输出
,则该值不会发送到数据库,它将只读取您在SQL中分配给它的任何内容。这就是为什么在分析器中会看到“0”(典型的未指定int值)
参数方向。InputOutput
?这一个应该是输入而不是输出,正如Dmitry所说的检查
参数方向。InputOutput
确实存在。你差点就成功了。选中“在已执行的查询(探查器)中,设置为参数的值为0,而我已将其设置为4”。如果您说它是
输出
,则该值不会发送到数据库,它将只读取您在SQL中分配给它的任何内容。这就是在分析器中看到“0”的原因(通常未指定int值)