PL/SQL PLS-00103エラーの対処方法とは?

このQ&Aのポイント
  • PL/SQLのコーディング中に発生するPLS-00103エラーについて説明します。
  • エラーメッセージの内容や発生原因を解説し、具体的な対処方法を紹介します。
  • PLS-00103エラーに遭遇した際には、ソースコードを注意深く確認し、エラー箇所を修正する必要があります。
回答を見る
  • ベストアンサー

PL/SQL PLS-00103エラーについて

PL/SQL PLS-00103エラーについて 夜分遅くに申し訳ございません。 PL/SQLのコーディングを実施し、コンパイル中にPLS-00103エラーが発生してしまったのですが、 対処方法がわからず困ってしまいました。 ・メッセージ内容:”PLS-00103: 記号"="が見つかりました。” 上記メッセージで指定されていたソース内容(イメージ)↓ -------------------------------------------------------------- ・ ・ BEGIN LV_STEP := '**登録処理開始'  -- 左記の:=の=部分がエラーメッセージで指定されていました。(LV_STEPはログ出力用の変数) CURSOR AAAA IS SELECT GG.EPLY_NO GG_EPLY_NO ,GG.R_CD GG_R_CD ,GG.S_CARD GG_S_CARD ・     ・    ・ FROM GRA_GRA_TR GG ・ ・ ・ ------------------------------------------------------------------ といった感じなのですが、 このPLS-00103エラーの対処方法をどなたかご教示いただけませんでしょうか。 よろしくお願いいたします。

  • Oracle
  • 回答数1
  • ありがとう数10

質問者が選んだベストアンサー

  • ベストアンサー
  • dda167
  • ベストアンサー率76% (55/72)
回答No.1

PLS-00103は構文解析エラーです。 指定されている行にはセミコロンがありませんが、 これが原因だとすると、 エラーメッセージは後ろに続く文で出るはずです。 エラーメッセージで示された箇所より前の部分(行)を調べてください。 # ソースの内容をイメージで示されても困ります。 # 回答者に超能力者は(おそらく)いないと思いますので # 勘で答えるよりほか仕方がありません。

london1985
質問者

お礼

どうもありがとうございました。

関連するQ&A

  • PL/SQLでPLS-00201のエラー

    初めて質問させていただきます。 よろしくお願いいたします。 Oracle 9i から 11g へバージョンアップしました。 9iでは動いていたPL/SQLコマンドが11gでは 以下のようなエラーが大量に発生します A_FLG Aシノニム名.列名%type ,      * 行16でエラーが発生しました ORA-00201:行16、列13: PLS-00201:識別子(シノニム名).(列名)を宣言してください。 PROCEDURE D_FLG_UPD ( a in varchar2 ) is type D_TYPE is record ( J シノニム名.列名.列名%type ,    ここでエラー   → A_FLG Aシノニム名.列名%type , B_FLG Bシノニム名.列名%type , C_FLG Cシノニム名.列名%type ); G H; begin これはどういった場合に発生するエラーなのでしょうか? またOracleのバージョンによってPL/SQLのコマンドが動かなくなったりすることは よくあることなのでしょうか? よろしくお願いいたします。

  • PL/SQLでSPOOLさせたいのですが、可能でしょうか?

    PL/SQLにてSPOOLにてSELECTの結果を ファイル出力させたいのですが、 (下記のような感じです。) エラーとなってしまいます。 そもそも、PL/SQLにてSPOOLは使用可能なのでしょうか? 例) declare  begin   spool c:\test_spool.dat    select * from dual;   spool off end; この例では 「PLS-00103: 記号"C"が見つかりました。」という エラーメッセージがかえってきます。。。 出力ファイルの指定のしかたが悪いのでしょうか? ご教授いただければ幸いです。 DBはOracle9iです。

  • オラクル(PL/SQL)のエラー

    いつもお世話になります。 オラクル・バージョン8.1.5を使用しています。 PL/SQLを実行すると以下のエラーが発生します。色々調べたのですが、解決しません。 なぜでしょうか?(ロジックがここでは書けないので、エラーのみ記載致します) ORA-06550:行1、列19:*PLS-00103: Encountered the symbol "." when expecting one of the following・・()-+mod この後ろは読めませんでした。 また、PL/SQLを実行したりするには、ただ単にオラクルをインストールしただけでは駄目なのでしょうか? よろしくお願い致します。

  • PL/SQLのコンパイルエラーについて(ignored)

    以下はPL/SQLの一部です。 if (vn_CNT > 0 ) then -- 座席マスタ更新実行 行27 update M_SEAT 行28 set M_SEAT.CD_PC = :new.NK_PC , 行29 M_SEAT.CD_TANTO = :new.CD_TANTO , 行30 where M_SEAT.NO_PORT = :new.NO_PORT ; end if ; 実行すると以下のエラーがでます。。 行番号 = 27 列番号 = 3 エラー・テキスト = PL/SQL: SQL Statement ignored 行番号 = 30 列番号 = 5 エラー・テキスト = PL/SQL: ORA-01747: user.table.column、table.columnまたは列指定が無効です ちなみにOEMコンソールで作成しています。 M_SEATというテーブルは存在します。 権限どうのと言われているのはわかるのですが結局なにが原因なのかわかりません。 どなたか教えてください。

  • PL/SQLのエラーについて

    こんばんは。PL/SQLのエラーについて質問させて頂きます。 現在、Oracle8.1.7のデータベースを使用したオラクルのE-business Suiteという人事系システムで開発をしています。 そこで、SQL*Plusを使用してPL/SQLのパッケージをコンパイルしたところ、パッケージ仕様部も本体部もコンパイルのエラーは出なかったのですが、E-business SuiteにPL/SQLを設定し、動作させようとしたら、下記のようなエラーが発生しました。 -------------------------------------------------------------------- FDPSTP 内のOracleエラー 6550 原因: ORA-06550: 行 1、列 7: PLS-00221: 'ZT_TYOUHYOU_HENSEI_PKG'がプロシージャではないか、または未定義です。 ORA-06550: 行 1、列 7: PL/SQL: Statement ignored が原因で FDPSTP に失敗しました。 --------------------------------------------------------------------- また、作成したPL/SQLパッケージの仕様部は下記のとおりです。 -------------------------------------------------------------------- CREATE OR REPLACE PACKAGE APPS.ZT_TYOUHYOU_HENSEI_PKG AS FUNCTION get_henseihyo_kbn (i_grade IN VARCHAR2,o_hensei_kbn OUT VARCHAR2) RETURN NUMBER; <・・・・・中間部分は省略・・・・・> PROCEDURE main_shori (p_process_date IN VARCHAR2, p_location IN VARCHAR2); END ZT_TYOUHYOU_HENSEI_PKG; -------------------------------------------------------------------- 原因だと思われる心当たりの部分も探してみたのですが、このエラーの意味は何なのか、原因はどこにあるのか分かりません。 どなたかお判りの方、御回答よろしくお願い致します。

  • SQLのSP2-エラーについて

    SQLの実行に失敗した際に出力される「SP2-」で始まるエラーは何があるか調べています。「ORA-」や「PLS-」のようにエラーメッセージ集のようなドキュメントはないのでしょうか。OTNで探したのですが見つかりませんでした。

  • PL/SQLの変数について

    困っています。 ホスト引数で :NAME = "あいうえお" としてoracleに渡し、 PL/SQLでNAMEという変数で受け取った後、 Xという変数にその"あいうえお"を'あいうえお' のように、シングルクォーテーションで囲んで入れたいのです。 ですが、 NAME = 'X' としたら文字列として認識してしまい、 NAME = ''X'' としたらPLS-00103のエラーが出てしまいます。 シングルクォーテーションで囲んだ文字列を変数にセットする場合はどのように書いたら宜しいのでしょうか??

  • PL/SQL

    PL/SQL(Oralce)で、NVARCHAR2の変数を宣言した場合、その変数への代入方法を教えてください。 Hensu NVARCHAR2; と宣言し、 Hensu := N'テスト'; とした場合、コンパイルエラーとなりませんが、 Hensu  NVARCHAR2; Hsensu1 VARCHAR2; と宣言し、 Hensu := N || Hsensu1; とした場合、”識別子Nを宣言してください。”旨のコンパイルエラーが出力されていしまいます。 OracleはR8.1.7です。 よろしくお願いします。

  • SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書

    SQL*Plus内でPL/SQL、SQLを実行するシェルスクリプトを書いています。 イメージ sqlplus scott/tiger << EOF   declare     aaa number;   begin     -- *1     select col1 into aaa from test1;   end;   /   -- *2   define a=1   define b=1   @test.sql EOF ここで*1にて例えば複数行が返ってくるなどのエラーが 発生した場合、*2以降のSQLを実行せずにSQL*Plusから抜けたいのですが どのようにすればよいかわかりますでしょうか。 whenever sqlerror exit 255 などはPL/SQL内の論理エラーはハンドリングしてくれないようです。 よろしくお願いします。 それかdefineや@マーク指定によるsqlファイルの取り込みを PL/SQLの中で実行できる方法を教えていただく方法でも 当方が実施したいことはできるのでそれでもかまいません。

  • PL/SQL ORA-06502エラーに関して(動的SQL)

    こんにちは、いつもお世話になっております。 現在、会社で動的SQLを使用してとある開発をおこなっているのですが、 どうしても上手くいかないので、どなたか教えて下さいm(__)m 下記の動的SQL文で最後から2行目のSQL:DBMS_OUTPUT.PUT_LINE(varDel); を実行するとORA-06502: PL/SQL: 数値または値のエラー: 文字列バッファが小さすぎます。のエラーが 発生します、過去ログやgoogleで検索をかけてみたのですが、 どうにも解決方法がわからず困っています・・・・ お知恵のある方、教えて下さいませm(__)m ※多分、sql文が長いせいだとは思うのですが、どうしても これ以上は短くできず、静的ではなく、動的で動かさなければならない という条件付きなんですが、宜しく御願いします。 DECLARE numkeepD NUMBER := 0; -- データ保管期間格納用 varAST VARCHAR2(4) := '**'; -- アクセス区分定義外格納用 varkeepD VARCHAR2(2000); -- KEEP_DAYS取得SQL文格納用 varDel VARCHAR2(2000); -- DELETE文格納用 BEGIN varkeepD := 'SELECT KEEP_DAYS FROM SMCI4T910 WHERE ACC_KBN = '''||varAST||''''; DBMS_OUTPUT.PUT_LINE(varkeepD); EXECUTE IMMEDIATE (varkeepD) INTO numkeepD; DBMS_OUTPUT.PUT_LINE(numkeepD); -- アクセスログデータ削除SQL文格納 varDel := 'DELETE FROM '||cTABLE_STCI1T910||' ST910 ' ||'WHERE ' ||'ST910.DELETE_FLG = SCIS_CTS.cDEL_NO AND ' ||'EXISTS(' ||'SELECT 1 ' ||'FROM SMCI4T910 SM910 ' ||'WHERE ' ||'ST910.ACC_KBN = SM910.ACC_KBN AND ' ||'ST910.ACC_CYMD < TO_CHAR(SYSDATE - SM910.KEEP_DAYS,''YYYYMMDD'') AND ' ||'ST910.ACC_KBN <> varAST AND ' ||'SM910.DELETE_FLG = SCIS_CTS.cDEL_NO)'; DBMS_OUTPUT.PUT_LINE(varDel); --EXECUTE IMMEDIATE (varDel) END;