0

これが私のストアドプロシージャです(問題を切り分けるのが簡単になったので、今やっていることはOUTパラメータを設定することだけです):

手順DequeuePPLPlatformMsg(msgType OUT VARCHAR2、msgBody OUT VARCHAR2)IS BEGIN

    msgType := 'TESTTYPE';
    msgBody := 'TESTBODY';

END DequeuePPLPlatformMsg;

ストアドプロシージャを呼び出してOUTパラメータの値を取得しようとする私のC#コードは次のとおりです。

            OConn = new OracleConnection();
            OConn.ConnectionString = "Password=mypw; User ID=myid; Data Source=devdb;";
            OConn.Open();
            OComm = new OracleCommand(StoredProc, OConn);
            OComm.CommandType = System.Data.CommandType.StoredProcedure;

        OComm.Parameters.Add("msgType", OracleDbType.Varchar2, 255, System.Data.ParameterDirection.Output);
        OComm.Parameters.Add("msgBody", OracleDbType.Varchar2, 255, System.Data.ParameterDirection.Output);

                int Result = OComm.ExecuteNonQuery();

                OConn.Close();

                String msgType = OComm.Parameters["msgType"].Value.ToString();
                String msgBody = OComm.Parameters["msgBody"].Value.ToString();

パラメータの値を見ると、空の文字列が含まれています。

何か案は?ありがとう!!

4

2 に答える 2

1

申し訳ありませんが、ここに詳細があります...

これはストアドプロシージャです。

手順DequeuePPLPlatformMsg(msgType OUT VARCHAR2、msgBody OUT VARCHAR2)IS BEGIN

msgType := 'TESTTYPE';
msgBody := 'TESTBODY';

END DequeuePPLPlatformMsg;

これはC#コードです:

        OConn = new OracleConnection();
        OConn.ConnectionString = "Password=mypw; User ID=myid; Data Source=devdb;";
        OConn.Open();
        OComm = new OracleCommand(StoredProc, OConn);
        OComm.CommandType = System.Data.CommandType.StoredProcedure;

        OracleParameter msgTypeParam = new OracleParameter("msgType", OracleDbType.Varchar2);
        msgTypeParam.Direction = System.Data.ParameterDirection.Output;
        msgTypeParam.Value = "";
        msgTypeParam.Size = 255;
        OComm.Parameters.Add(msgTypeParam);

        OracleParameter msgBodyParam = new OracleParameter("msgBody", OracleDbType.XmlType);
        msgBodyParam.Direction = System.Data.ParameterDirection.Output;
        OComm.Parameters.Add(msgBodyParam);


            int Result = OComm.ExecuteNonQuery();

            OConn.Close();

            String msgType = msgTypeParam.Value.ToString();

msgTypeはString.Emptyです

ありがとう!

于 2013-06-27T18:36:14.270 に答える
0

単純に値でアクセスしようとしましたか?

Dim retValParam As New OracleClient.OracleParameter("p_retVal", OracleClient.OracleType.VarChar)

retValParam.Direction = ParameterDirection.Output
retValParam.Size = 100
retValParam.Value = ""
command.Parameters.Add(retValParam)

command.ExecuteNonQuery()
retVal = retValParam.Value
于 2013-03-08T15:38:21.173 に答える