次のように定義された単純なパッケージがあります。
CREATE OR REPLACE PACKAGE wvParty IS
TYPE refParties IS REF CURSOR;
終了 wvParty;
パッケージ本体の作成または置換
OPEN x_party_info FOR
SELECT party_id, party_number, party_type, party_name,
person_first_name, person_middle_name, person_last_name,
known_as, known_as2, known_as3, known_as4, known_as5
FROM hz_parties
WHERE 1=1
AND party_name LIKE p_party_name;
END;
終了 wvParty;
エラーなしでOracle dbに作成されます。私のコードでは、次を使用して呼び出そうとしています:
try
{
OracleConnection conn = new OracleConnection(_connStr);
conn.Open();
OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "wvParty.proc_GetParties";
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter partyName = new OracleParameter();
partyName.ParameterName = "p_party_name";
partyName.OracleDbType = OracleDbType.Varchar2;
partyName.Direction = ParameterDirection.InputOutput;
partyName.Value = "Bubba";
cmd.Parameters.Add(partyName);
OracleParameter refParties = new OracleParameter();
refParties.ParameterName = "x_party_info";
refParties.OracleDbType = OracleDbType.RefCursor;
refParties.Direction = ParameterDirection.Output;
cmd.Parameters.Add(refParties);
OracleDataReader rdr = cmd.ExecuteReader();
それでも、私がそうすると、エラーが発生します:
PLS-00302: コンポーネント'PROC_GETPARTIES'を宣言する必要があります。
だから私は途方に暮れています。私はパッケージの一部として proc を作成しました。そうすべきだと信じているので宣言しましたが、これを解決することにほとんど成功していません。なにか提案を?