C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
掲示板トップ
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
上記ツリーを一括表示
/
上記ツリーをトピック表示
上記の記事へ返信
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
URL は自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
名前
(*必須)
E-Mail (任意)
Web サイト (任意)
投稿モード
通常モード
図表モード (ソースコードを貼る場合はこちらを使用)
本文
(質問の場合は、開発環境・使用言語のバージョンなどを最初に書いてください)
■No100120 (AS702 さん) に返信 > ■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個目の値がセットされた。 >
編集キー
自分の投稿を編集する時に必要です
(半角8文字以内)
解決済み
/
解決したらチェックしておきましょう。
プレビュー/
管理者用
-
Child Tree
-