私は 1 日以上 Oracle データベースへの呼び出しに苦労しています。プログラム以外でデータベースにアクセスすることはできませんが、DBA は次のことを教えてくれました。
desc appowner.member_data_package
PROCEDURE UPDATE_NOTES_V001
Argument Name Type In/Out Default?
------------------------------ ----------------------- ------ --------
TAU_UID_IN VARCHAR2 IN
INCOMING_FUNC_IN VARCHAR2 IN
INCOMING_TEXT_IN VARCHAR2 IN
SYS_SOURCE_IN VARCHAR2 IN
USER_ID_IN VARCHAR2 IN
O_STATUS VARCHAR2 OUT
私のコードは次のようになります。
using (var connection = new OracleConnection(connectionString))
{
connection.Open();
OracleCommand command = new OracleCommand
{
Connection = connection,
CommandType = CommandType.StoredProcedure,
CommandText = "appowner.MEMBER_DATA_PACKAGE.UPDATE_NOTES_V001",
BindByName = true
};
command.Parameters.Add(new OracleParameter("O_STATUS", OracleDbType.Varchar2, ParameterDirection.ReturnValue));
command.Parameters.Add(new OracleParameter("TAU_UID_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "7400";
command.Parameters.Add(new OracleParameter("INCOMING_FUNC_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "PROVCOUNT";
command.Parameters.Add(new OracleParameter("INCOMING_TEXT_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "Pypestream testing.";
command.Parameters.Add(new OracleParameter("SYS_SOURCE_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "CRM";
command.Parameters.Add(new OracleParameter("USER_ID_IN", OracleDbType.Varchar2, ParameterDirection.Input)).Value = "jac";
command.ExecuteNonQuery();
Console.WriteLine($"Insert output value is '{command.Parameters["O_STATUS"].Value.ToString()}'");
}
これを実行すると発生するエラーは次のとおりです。
ORA-06550: line 1, column 15:
PLS-00306: wrong number or types of arguments in call to 'UPDATE_NOTES_V001'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
私が知る限り、私は適切な数と種類の引数を持っていますが、オラクルの方法で私よりも賢い人 (基本的には誰でも) が私がどこを台無しにしたかを指摘できれば、それは素晴らしいことです.
その部分が正しく見え、エラーがある種の赤いニシンである場合、他に何を確認できますか? このプロシージャを呼び出す他の方法はありますか? 私は Visual Studio 2017 以外のツールを持っていないことに注意してください。役立つ拡張機能をダウンロードできません。DBA への電子メール以外に、データベースに直接アクセスすることはできません。
また、ここで完全に間違った方向に進んでいる可能性があることも認めます。ここやネットで見たいくつかの例に基づいて、Oracleデータベースに値を挿入するコードは次のようになると完全に推測しています。これに取り組むためのアドバイスは役に立ちます。