[解決済み] Oracle Error PLS-00323: サブプログラムまたはカーソルがパッケージ仕様で宣言されているため、パッケージ本体で定義する必要があります。
2022-02-24 07:02:15
質問内容
pl/sqlプロシージャをパッケージに入れるのを手伝ってくれる人がいますか?私は試してみましたが、苦労しています。
私のパッケージの仕様はこんな感じです。
CREATE OR REPLACE PACKAGE film_pkg
IS
title VARCHAR2(100);
PROCEDURE get_films(fname VARCHAR2);
END film_pkg;
--
これが私のパッケージ本体で、問題にぶつかっているところです。
CREATE OR REPLACE PACKAGE BODY film_pkg
IS
PROCEDURE get_films (fname IN film.title%TYPE,
r_date OUT film.release_date%TYPE,
dur OUT film.duration%TYPE)
AS
BEGIN
SELECT release_date, duration
INTO r_date, dur
FROM FILM
WHERE title = fname;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
r_date := '';
dur := '';
END get_films;
END film_pkg;
もし誰かがこのエラーを修正するのを手伝ってくれるなら、私はそれを感謝します。
Error(4,11): PLS-00323: subprogram or cursor 'GET_FILMS' is declared in a package specification and must be defined in the package body
解決方法は?
ヘッダーとボディのプロシージャの定義が一致していない
ヘッダーに、あります。
PROCEDURE get_films(fname VARCHAR2);
一方、本文では
PROCEDURE get_films(fname IN film.title%type,
r_date OUT film.release_date%type, dur OUT film.duration%type)
おそらく、2つのOUTパラメータを追加してヘッダー定義を更新する必要があるのでしょう?
まとめると
- ヘッダー定義がボディ実装のすべてのパラメータ(パラメータの数、パラメータ名、パラメータの順序、パラメータタイプ)と一致することを確認する。
-
Alexのコメントにあるように、カスタムタイプ(
film.title%type
) とベースタイプ (VARCHAR2
). どちらか一方を選択してください。
関連
-
[解決済み】集約関数のないTSQLピボット
-
[解決済み】BULK INSERTで「予期せぬファイルの終了」エラーが発生したROWを特定する?
-
[解決済み】ORA-01791: SELECTされた式ではない
-
[解決済み] ORA-01779: キーが保存されていないテーブルにマップされる列を変更できません。
-
[解決済み] ORA-01735: 無効な ALTER TABLE オプション - ヒキガエル
-
[解決済み] Presto の JSON_EXTRACT で ' ' 文字を含むキーに問題がある。
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しません。
-
[解決済み] ORA-00997: LONG データタイプの不正使用に対する回避策
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】テキストが切り捨てられた、または1つ以上の文字がターゲットコードページで一致しない アンピボットの主キーを含む
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み】SQL Server: 無効なカラム名
-
[解決済み】SQL Serverは「集約関数やサブクエリを含む式に対して集約関数を実行できない」が、Sybaseはできる。
-
[解決済み] エラー: 名前解析スクリプトで正しい関数に渡された長さのパラメーターが無効です。
-
[解決済み] ORA-01779: キーが保存されていないテーブルにマップされる列を変更できません。
-
[解決済み] Oracle(LiveSQL)のSQL [重複]について
-
[解決済み] SQLです。最初の出現箇所のみを返す
-
[解決済み] 列名または提供された値の数がテーブル定義と一致しません。
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。