C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■100120 / 6階層)  Oracle Package呼出時エラー PLS-00306
□投稿者/ AS702 (7回)-(2022/07/04(Mon) 20:12:54)
No100119 (KOZ さん) に返信
> ■No100118 (AS702 さん) に返信
>>簡単なことで申し訳ないのですが、p_In_出力項目の配列[1]に格納されている値をstring型の変数にいれる方法もご教授いただけないでしょうか。
>
> OracleString[] になっているので、各要素を OracleString にキャストして Value プロパティを参照してください。
>

ご指摘の修正を行うことで、目指していたことが実現できました。
本当にありがとうございました。

修正したC#コーディングを記載しておきます。


OracleConnection conn = new OracleConnection(P.Default.conn_string);
conn.Open();

OracleCommand cmd = conn.CreateCommand();
cmd.CommandText = "Begin P_顧客DB.検索(:int_更新有無,:I_顧客検索,:O_顧客検索);END;";
cmd.CommandType = CommandType.Text;

OracleParameter p_更新有無 = new OracleParameter("int_更新有無", OracleDbType.Decimal, ParameterDirection.Input);
OracleParameter p_In_入力項目 = new OracleParameter("I_顧客検索", OracleDbType.Varchar2, ParameterDirection.Input);
OracleParameter p_In_出力項目 = = new OracleParameter("O_顧客検索", OracleDbType.Varchar2, ParameterDirection.Output);

p_In_入力項目.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
p_In_出力項目.CollectionType = OracleCollectionType.PLSQLAssociativeArray;

p_In_入力項目.Value = new string[2] {"1", "123456"}; //店番、顧客番号
p_更新有無.Value = 0;

p_In_入力項目.Size = 2;
p_In_出力項目.Size = 160;

p_In_出力項目.ArrayBindSize = Enumerable.Repeat<int>(60, 160).ToArray();

cmd.Parameter.Add(p_更新有無);
cmd.Parameter.Add(p_In_入力項目);
cmd.Parameter.Add(p_In_出力項目);

cmd.ExecuteNonQuery();

OracleString[] OraStr = (OracleString[])(p_In_出力項目.Value);
string[] arr = OraStr.Select(os => os.IsNull ? null : os.Value).ToArray();

string val = arr[1].ToString();
⇒valに2個目の値がセットされた。

解決済み
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[5]: Oracle Package呼出時エラー PLS-00306 /KOZ 返信無し
 
上記関連ツリー

Oracle Package呼出時エラー PLS-00306 / AS702 (22/06/30(Thu) 19:15) #100051
Re[1]: Oracle Package呼出時エラー PLS-00306 / KOZ (22/06/30(Thu) 19:33) #100052
│├ Re[2]: Oracle Package呼出時エラー PLS-00306 / KOZ (22/07/01(Fri) 00:30) #100053
│└ Re[2]: Oracle Package呼出時エラー PLS-00306 / AS702 (22/07/04(Mon) 17:32) #100115
│  ├ Re[3]: Oracle Package呼出時エラー PLS-00306 / KOZ (22/07/04(Mon) 18:44) #100116
│  └ Re[3]: Oracle Package呼出時エラー PLS-00306 / KOZ (22/07/04(Mon) 18:57) #100117
│    └ Re[4]: Oracle Package呼出時エラー PLS-00306 / AS702 (22/07/04(Mon) 19:17) #100118
│      └ Re[5]: Oracle Package呼出時エラー PLS-00306 / KOZ (22/07/04(Mon) 19:25) #100119
│        └ Oracle Package呼出時エラー PLS-00306 / AS702 (22/07/04(Mon) 20:12) #100120 解決済み ←Now
Re[1]: Oracle Package呼出時エラー PLS-00306 / radian (22/07/01(Fri) 08:58) #100055
  └ Re[2]: Oracle Package呼出時エラー PLS-00306 / KOZ (22/07/01(Fri) 09:32) #100056
    ├ Re[3]: Oracle Package呼出時エラー PLS-00306 / radian (22/07/01(Fri) 10:15) #100058
    └ Re[3]: Oracle Package呼出時エラー PLS-00306 / KOZ (22/07/02(Sat) 08:44) #100088

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信