- ベストアンサー
ストアドの戻り値で配列を返す方法
お世話になります。 早速ですが、ストアドプロシージャを使用する際に 戻り値で配列を使用することは可能でしょうか? 検索方法が悪いのか、なかなかそれらしい結果が見つけられませんでした。 ご教示の程よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
関連するQ&A
- SQLServer2005のストアドプロシージャで変数を配列で使用する方法をご教示ください
タイトルの件。調査したのですが、変数を配列でとる方法(宣言の仕方や使用方法)が見つけられませんでした。 ご存知の方、ご教示いただけませんでしょうか? できれば使用方法が書かれた本やサイトをご紹介いただけると助かります。 それともSQLServer2005のストアドプロシージャでは変数を配列で使用することはできないのでしょうか? (そんなことはないと思うのですが、探しても出てこないのが不思議です。私の検索方法が悪いからだと思いますが) 以上です。よろしくお願いします。
- ベストアンサー
- SQL Server
- ストアドプロシージャの戻り値が取得できない
ストアドプロシージャの戻り値が取得できない ストアドプロシージャ内でSelectとUpdateを行い、設定した戻り値をリターンしたいのです。 ついでにSelectとした複数行の結果の読み込みもしたいのですが。 Dim cmd As New System.Data.SqlClient.SqlCommand Dim i As Integer Dim readerA As System.Data.SqlClient.SqlDataReader cmd.CommandType = Data.CommandType.StoredProcedure cmd.CommandText = "SP名" cmd.Parameters.Add("A", System.Data.SqlDbType.Int) cmd.Parameters("A").Direction = System.Data.ParameterDirection.ReturnValue readerA = cmd.ExecuteReader() i = cmd.Parameters("A").Value if (i = 0) Then 処理 End If While readerA.Read() 処理 End While 上記でSelectした結果をreaderA("カラム名") で読みこめているのですが、戻り値Aの値が取得できていません。 ウォッチ式でcmd.Parameters("A").Valueを見るとNothingになっています。 ちなみに、違うストアドを実行しているところでは戻り値は取得できています。。。 ストアドがおかしいんでしょうか。Selectの取得結果も見ようとしているのがまずいのでしょうか。 環境はvb.net、SQLServer2005です。
- ベストアンサー
- Visual Basic
- :ストアドプロシージャ内での配列の使用:
:ストアドプロシージャ内での配列の使用: 環境 アプリケーション側:C#.net データベース側:Oracle10g アプリケーションから文字列の配列を引数として渡し、 プロシージャ内でその配列の中身がなくなるまでループでUPDATE文を実行しようとしています。 引数例(文字列配列):para[] (para[0]='ねこ',para[1]='ねずみ',para[2]='たぬき',para[3]='人',…) While文1週目では「ねこ」を、2週目では「ねずみ」をSET句に格納したSQLを実行するのが目的です。 同じストアド内であれば、結果セットをカーソルに放り込み フェッチ&Whileで順番に取得する事ができますが、 外部から引数として渡された配列をストアド内ループで順番に取得するにはどうしたらよいのでしょうか? アプリ側で引数を特定してから渡せば配列個数文ストアドをコールするという手段が取れますが 配列数が多くなった時に遅くなりすぎるという問題があります。 どなたか詳しい方おりましたらご教授いただきたく思います。宜しくお願いします。
- ベストアンサー
- Oracle
- ストアドの戻り値(配列)について
ストアドをコールして配列型の戻り値を取得したいのですが、 エラーが出てしまい原因が分かりません。 どなたかご教授頂けないでしょうか? ★PL/SQL★ CREATE OR REPLACE TYPE TBL_NUM10 AS VARRAY(10) OF NUMBER(10); CREATE OR REPLACE PACKAGE TEST_PKG IS TYPE TBL_NUM10 IS VARRAY(10) OF NUMBER(10); PROCEDURE HAIRETU(O_CNT OUT TBL_NUM10); END TEST_PKG; / CREATE OR REPLACE PACKAGE BODY TEST_PKG IS PROCEDURE HAIRETU(O_CNT OUT TBL_NUM10) IS TMP_CNT TBL_NUM10; BEGIN TMP_CNT := TBL_NUM10(0,0,0,0,0,0,0,0,0,0); TMP_CNT(1) := 1; TMP_CNT(2) := 2; TMP_CNT(3) := 3; O_CNT := TMP_CNT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); END HAIRETU; END TEST_PKG; / DECLARE O_CNT TBL_NUM10; BEGIN TEST_PKG.HAIRETU(O_CNT); DBMS_OUTPUT.PUT_LINE(O_CNT(1)); DBMS_OUTPUT.PUT_LINE(O_CNT(2)); DBMS_OUTPUT.PUT_LINE(O_CNT(3)); END; / ★実行結果★ SQL実行中に以下のエラーが発生しました。 ORA-06550: 行4、列4: PLS-00306: 'HAIRETU'の呼出しで、引数の数または型が正しくありません。 ORA-06550: 行4、列4: PL/SQL: Statement ignored よろしくお願いします。
- ベストアンサー
- その他(データベース)
- MySQLのストアドプロシージャについて
MySQL5.6のストアドプロシージャが返すSELECT結果のフェッチ方法について教えてください。 delimiter $ create procedure sample_proc() begin select * from TEST_TBL; end$ の様なストアドプロシージャがあり、これを他のストアドプロシージャから呼び出して、 ループしながらフェッチしたいのですが、どうすればよいでしょうか。
- 締切済み
- MySQL
- sqlserver でCreatしないでストアドを使いたい
お世話になります ストアドのクリエイトがかけられないのですが、 VB.NETで戻り値を取れるようなストアドを使用したい状況です クリエイトをかけずに戻り値があるような動的なSqlは流せるのでしょうか テーブル以外はクリエイトしてはいけないという不思議な条件がついた開発に参加することになってしまったのです・・・ どなたか御教授いただけたらありがたいです
- ベストアンサー
- SQL Server
- ストアドプロシージャの実行
こんばんは。 C#のアプリケーションからストアドプロシージャの実行を検討 しています。ストアドプロシージャでは複数テーブルを更新する バッチシステムです。 このケースでは、C#側ではエラーをどこまでハンドリングするのが 良いでしょうか?。 「成功と失敗の戻り値だけ」か、それとも「ORA-」のようなエラーまで全てハンドリングすべきか迷っていまして・・。 ご意見お願いします。
- ベストアンサー
- その他(プログラミング・開発)
- ASPからSQL Server2000のストアドプロシージャーを利用したいのですが。。
ASPからSQL Server2000のストアドプロシージャーを 利用したいのですが、記述の方法どのようにすれば いいのでしょうか? ストアドプロシージャーの結果をレコードセットと して、ASPの中で使用したいのですが。。。
- ベストアンサー
- その他(データベース)
- プロシージャの戻り値を取得する方法
perlからSQLPLUS->プロシージャを実行してその戻り値を取得。 戻り値が0なら次の処理へ、0以外ならエラー処理へというようなことをやりたいと思っています。 perlの実行コマンドは以下。 $sqlcmd = "sqlplus$DBUSER$PASS\@DB_ALIAS\@$SQLFILE $OUTFILE"; $sql_ret = system("$sqlcmd") >>8; この$sql_retにプロシージャの戻り値が入るようにしたいのです。 プロシージャを実行する$SQLFILEは以下のようなSQLです。 --------------------------------------------------- set serveroutput on WHENEVER SQLERROR EXIT 1 spool &1; DECLARE RetVal NUMBER; BEGIN RetVal := 実行ストアドファンクション; END; / spool off; EXIT SQL.SQLCODE; ---------------------------------------------- エラーが起きたときにファンクションは1を返すようにしているのですが、 それがSQLPLUSの実行結果の戻り値に反映されません。 どうしたらいいのでしょうか? よろしくお願いします。
- 締切済み
- Perl
- 配列を関数の戻り値に使う
こんばんわ。 PHP5で配列を関数の戻り値として返す方法がわからず今回投稿させていただきました。 配列は1次元で 1,2,3 の値が a という配列に格納されています。 呼び出された関数(testメソッド)で a配列を返し、bで受けようとするのですが、bの値には NULL となっています。 返す際に return $a; としており、 $b=$obj-〉test(); で、aをbで受けようと考えております。 配列を返す場合は普通にretuneで返すだけではダメなのでしょうか。 解決方法がお分りの方がいらっしゃいましたらご教授のほうおねがいします。
- ベストアンサー
- PHP
お礼
ご回答頂きましてありがとうございました。 参考になりました。