
以下のようなパッケージを作っています。
CREATE OR REPLACE PACKAGE
"TEST"."TEST_P" as
type test_type1 is table of TEST.TEST_TABLE%ROWTYPE;
procedure test2 (ret OUT test_type1 ) ;
end;
-----------------------------------
本体
-----------------------------------
CREATE OR REPLACE PACKAGE BODY
"TEST"."TEST_P" as
procedure test2( ret OUT test_type1 ) is
cursor basic_cusor is
select * from TEST.TEST_TABLE;
BEGIN
open basic_cusor;
loop
fetch basic_cusor into ret(0);
exit when basic_cusor%notfound;
END loop;
END TEST3;
end;
----------------------------------------
これをSQL Pluseから
set serveroutput on;
declare
arg1 TEST.TEST_P.test_type1;
begin
TEST.TEST_P.test2(arg1);
dbms_output.put(arg1(0).coulm1);
end;
のように実行するとエラーが出ます。
初期化処理とはどのように行えばいいのでしょうか?
最終的にはSQLServerのストアドようにテーブル
のような構造で値を返えせればいいです。
No.2ベストアンサー
- 回答日時:
こんにちは。
パッケージのプロシージャの引数で使用する場合、パッケージの宣言部においてインスタンスを作成しなければいけません・・・。
それと、作成したインスタンスをコレクションの型で初期化する必要があります。
これはIndexBy表(PL/SQL表)と違うところです。
(^^ゞ
ありがとうございます。
解決しました。
type test_type1 is table of TEST.TEST_TABLE%ROWTYPE;
を
type test_type1 is table of TEST.TEST_TABLE%ROWTYPE INDEX BY BINARY_INTEGER;
としたところエラーは消えました。
Oracleはまだはじめたばかりなので
INDEX BY BINARY_INTEGERをつけると何が変るのかは
まだ知りませんがこれから調べてみようと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
変数が選択リストにありません
Oracle
-
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
カーソル0件の時にエラーを発生させる
Oracle
-
-
4
PL/SQLカーソルの2重FORループができません
Oracle
-
5
Statement ignored というエラー
Oracle
-
6
【PL/SQL】FROM区に変数を使う方法
Oracle
-
7
ストアドの戻り値(配列)について
その他(データベース)
-
8
カーソルを使って、最終行レコードの判断はどうすればよいのでしょうか。
SQL Server
-
9
【DB】同じトランザクション内でupdateとselectをしたときの結果値
その他(データベース)
-
10
PL/SQLのコンパイルエラーについて(ignored)
Oracle
-
11
PL/SQLをWindowsのBATファイルで実行するには
Oracle
-
12
PL/SQLでの文字列比較
Oracle
-
13
SQL*LoaderでCSVから指定した列のみインポートしたい。
Oracle
-
14
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
15
PL/SQLでファンクション名に変数を使用するには
その他(プログラミング・Web制作)
-
16
SQL*Loaderで、データを加工してロードしたいです。
Oracle
-
17
UPDATE文のWHERE条件に他のテーブルのフィールドも入れたい
SQL Server
-
18
PL/SQL PLS-00103エラーについて
Oracle
-
19
PLSQLのNumber型の初期化
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ストアド実行時のエラー「参照...
-
時間項目を60進数から10進数へ...
-
プロシージャ 引数 指定
-
ストアドプロシージャからアナ...
-
ストアドプロシジャからストア...
-
PL/SQL 実行中のSID
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
キャッシュを使わずにSELECTを...
-
Statement ignored というエラー
-
SQL*Loaderでのsysdate使用
-
SQLで部分的にGROUP BYしたいとき
-
重複するIDのデータを1行にま...
-
別のスキーマのテーブルアップ...
-
likeとsubstrの使いわけについて
-
ODBCリンクの際にACCESSでは読...
-
WHERE句の実行順序
-
データ型について教えてください。
-
excel/vba/public変数
-
SQLserver算術オーバーフロ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ストアドプロシジャからストア...
-
ストアド実行時のエラー「参照...
-
INSERT文の書式
-
PL/SQLのファンクションでのOUT...
-
PL/SQL exceptionを呼び出すには?
-
ストアドプロシージャからアナ...
-
PL/SQLについて
-
時間項目を60進数から10進数へ...
-
パッケージ内のファンクション...
-
PL/SQL 実行中のSID
-
質問:DBMS_OUTPUTの使用方法
-
毎日決まった時間にSQLを実...
-
ROW_NUMBER()を使用したデータ取得
-
PL/SQLに関して
-
OracleのTEXT_IOについて
-
ストアドについて
-
PL/SQLの例外
-
Function内に記述したdbms_outp...
-
PL/SQLのパフォーマンスについて
-
ストアドファンクション中でcon...
おすすめ情報