私は1日以上Oracleデータベースの呼び出しに苦労しています。 DBAは、次の私に与えることができたが、私は、プログラム的以外のデータベースにはアクセスできません:この問題を解決するには "PLS-00306:コールの引数またはタイプが間違っています..."
私のコードは次のようになり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
私の知る限り、私はは、右引数の数と型を持っている伝えることができますが、ようであればOの方法で私よりも賢い誰かracle(基本的には誰でも)は、私が驚いたところを指摘することができます。
この部分が正しいと思われ、エラーがある種の赤ん坊である場合、他に何が見えますか?この手続きを呼び出す他の方法はありますか? Visual Studio 2017以外のツールはありません。便利な拡張機能はダウンロードできません。 DBAへの電子メール以外にデータベースに直接アクセスすることはできません。
私はここで完全に間違った指摘になるかもしれないと告白します。私は完全にOracleデータベースに値を挿入するコードを推測しています。これに取り組むためのアドバイスは参考になります。
Oracleでパラメータを渡す場合は、Oracleストアド・プロシージャで宣言されている順序でパラメータを渡す必要があります。またはこの 'ParameterDirection.ReturnValue'を' ParameterDirection.OutPut'に変更しました。正確なSql文を表示できますか? – MethodMan
返される値を割り当てるSQLと一緒に完全なプロシージャを表示できますか?戻り値はOracleの数値INT型であると期待します。INTは異なっていますが、1つは小数点以下10進数に変換されますが、もう1つはINTEGERです...これは実際に最後の夜のような問題を修正しました – MethodMan
残念ながら私は表示できません手順。文字通り私が続けなければならないのは、私が上記で提供した内容です。 @MethodMan、私は、procはvarchar2以外の何かを返すだろうと思っていただろうが、descがどういう形であってもテキストではないようでない限り。 –