提问者:小点点

从C#返回输出参数


我有一个带有2个输入参数和2个输出参数的程序。 目前运行良好。 但是,我想取过程的两个输出参数并将其存储在一个变量中。 有谁能指导我如何。

存储过程代码:

null

create or replace PROCEDURE P_LOGIN_USER
(
  USERNAME IN VARCHAR2 
, ENCRYPTIONKEY IN VARCHAR2 
, OUT_STATUS OUT VARCHAR2 
, OUT_STATUS_DESC OUT VARCHAR2

) 

------------------------Procedure Code
END P_LOGIN_USER

null

我分配输入参数的C#代码。 缺少获取输出参数的部分

null

            OracleCommand cmd = new OracleCommand("P_LOGIN_USER", OrCon);
            cmd.CommandType = CommandType.StoredProcedure;

            OracleParameter in_username = new OracleParameter();
            in_username.OracleDbType = OracleDbType.Varchar2;
            in_username.Direction = ParameterDirection.Input;
            in_username.Size = 500;
            in_username.Value = username;
            cmd.Parameters.Add(in_username);

            OracleParameter in_ecnryptionkey = new OracleParameter();
            in_ecnryptionkey.OracleDbType = OracleDbType.Varchar2;
            in_ecnryptionkey.Direction = ParameterDirection.Input;
            in_ecnryptionkey.Size = 500;
            in_ecnryptionkey.Value = password;
            cmd.Parameters.Add(in_ecnryptionkey);

           OracleParameter out_1 = new OracleParameter();
            out_1.OracleDbType = OracleDbType.Varchar2;
            out_1.Direction = ParameterDirection.Output;
            out_1.Size = 500;
            cmd.Parameters.Add(out_1);

            OracleParameter out_2 = new OracleParameter();
            out_2.OracleDbType = OracleDbType.Varchar2;
            out_2.Direction = ParameterDirection.Output;
            out_2.Size = 500;
            cmd.Parameters.Add(out_2);

            try
            {
                OrCon.Open();
                cmd.ExecuteNonQuery();

                cmd.CommandType = CommandType.StoredProcedure;
                cmd.CommandText = "P_LOGIN_USER";
                cmd.Parameters.Add(new OracleParameter
                {
                    ParameterName = "result",
                    Size = 1,
                    Direction = ParameterDirection.ReturnValue,
                    OracleDbType = OracleDbType.Varchar2
                });


            }
            catch (OracleException ex)
            {
                Console.Write(ex.Message);
            }

            OrCon.Close();

null


共1个答案

匿名用户

您可以像这样获取输出参数的值。

string outputStatus = Convert.ToString(cmd.Parameters["@OUT_STATUS "].Value); 

将上面的行放在executeNonQuery()之后