• 締切済み

PCC-S-02201エラー

初心者です。 Oracle10G、 Pro*Cで開発をしているのですが、下記のSQLでコンパイルエラーが出てしまいます。 何が問題なのでしょうか? やろうとしていることは、 「MERGE」を使用したデータの追加または変更です。 どうぞよろしくお願いいたします。 【コード】 EXEC SQL MERGE INTO MD_DZKI USING MK_SSZK ON (MD_DZKI.DZKI_SHN_CD = MK_SSZK.SSZK_SHN_CD) WHEN MATCHED THEN UPDATE SET MD_DZKI.DZKI_IG_KBN = MK_SSZK.SSZK_IG_KBN WHEN NOT MATCHED THEN INSERT (MD_DZKI.DZKI_BTEN_CD, MD_DZKI.DZKI_SHN_CD,MD_DZKI.DZKI_IG_KBN) VALUES (MK_SSZK.SSZK_BTEN_CD, MK_SSZK.SSZK_SHN_CD, MK_SSZK.SSZK_IG_KBN) WHERE MK_SSZK.SSZK_SHN_CD = 100; 【エラー】 構文エラー(行297、列15、ファイル/home/neccomts/BT_SI_BUILD/Z/BSRoot/src/compilesrc/harada003.pc): 行297、列15でエラーが発生しました。ファイル/home/neccomts/BT_SI_BUILD/Z/BSRoot/src/compilesrc/harad a003.pc EXEC SQL MERGE INTO MD_DZKI USING MK_SSZK ..............1 PCC-S-02201, 記号"MERGE"が見つかりました。 次のうちの1つが入るとき: for, register, at, close, commit, connect, declare, describe, execute, fetch, open, prepare, rollback, select, whenever, alter, audit, comment, create, delete, drop, get, grant, insert, lock, noaudit, rename, revoke, set, update, validate, arraylen, allocate, cache, call, collection, context, deallocate, enable, free, lob, object, savepoint, analyze, explain, truncate, 記号"alter," は続行のために"MERGE"に代わりました。 行0、列0でエラーが発生しました。ファイル/home/neccomts/BT_SI_BUILD/Z/BSRoot/src/compilesrc/harada00 3.pc PCC-F-02102, Cプリプロセッサ処理を実行中に致命エラーが発生しました。 *** エラー終了コード 1

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

みんなの回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1
hharradda
質問者

お礼

ご回答有難うございます。 動的SQLを試したところ上手く作動しました。 (実は提供していただいたサイトも拝見したんですが、 恥ずかしながら意味が分からなくて。) また宜しくお願いします。

関連するQ&A

  • オラクル10G Pro*Cにおける「merge」について

    初心者です。 Oracle10G、 Pro*Cで開発をしているのですが、下記のSQLでコンパイルエラーが出てしまいます。 どうやら、Pro*Cでは「merge」は構文解析されると利用できないみたいなんです。 構文解析しないで利用する方法を教えていただけないでしょうか? どうぞよろしくお願いいたします。 【コード】 EXEC SQL MERGE INTO MD_DZKI USING MK_SSZK   ON (MD_DZKI.DZKI_SHN_CD = MK_SSZK.SSZK_SHN_CD)   WHEN MATCHED THEN UPDATE SET MD_DZKI.DZKI_IG_KBN =           MK_SSZK.SSZK_IG_KBN   WHEN NOT MATCHED THEN INSERT (MD_DZKI.DZKI_BTEN_CD,          MD_DZKI.DZKI_SHN_CD,MD_DZKI.DZKI_IG_KBN)     VALUES (MK_SSZK.SSZK_BTEN_CD, MK_SSZK.SSZK_SHN_CD,            MK_SSZK.SSZK_IG_KBN)   WHERE MK_SSZK.SSZK_SHN_CD = 100; 【エラー】 構文エラー(行297、列15、ファイル/home/neccomts/BT_SI_BUILD/Z/BSRoot/src/compilesrc/harada003.pc): 行297、列15でエラーが発生しました。ファイル/home/neccomts/BT_SI_BUILD/Z/BSRoot/src/compilesrc/harad a003.pc EXEC SQL MERGE INTO MD_DZKI USING MK_SSZK ..............1 PCC-S-02201, 記号"MERGE"が見つかりました。 次のうちの1つが入るとき: for, register, at, close, commit, connect, declare, describe, execute, fetch, open, prepare, rollback, select, whenever, alter, audit, comment, create, delete, drop, get, grant, insert, lock, noaudit, rename, revoke, set, update, validate, arraylen, allocate, cache, call, collection, context, deallocate, enable, free, lob, object, savepoint, analyze, explain, truncate, 記号"alter," は続行のために"MERGE"に代わりました。 行0、列0でエラーが発生しました。ファイル/home/neccomts/BT_SI_BUILD/Z/BSRoot/src/compilesrc/harada00 3.pc PCC-F-02102, Cプリプロセッサ処理を実行中に致命エラーが発生しました。 *** エラー終了コード 1

  • PCC-S-02201エラー

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLでコンパイルエラーが出てしまいます。エラー内容は 「PCC-S-02201, 記号"+"が見つかりました。」 SQLPlus上では問題なく検索されるのですが、うまくいきません。 何が問題なのでしょうか? EXEC SQL SELECT A_DAY FROM DB1 WHERE B_NUM = ((SELECT B_NUM FROM DB1 WHERE A_DAY = '20040722') + 1); B_NUMはNUMBER型です。

  • MERGE文について

    お世話になります。 oracleのMERGE文で アンマッチ時のインサート文にSELECTで 引いた値を入れたいのですが、 ORA-00926エラーになってしまいます。 MERGEのインサート文にSELECTは使えないのでしょうか? 尚、INSERT文単体ではエラーなく挿入できます。 以上、よろしくお願いいたします。 以下、SQLです。 MERGE INTO USER_MASTER UM USING USER_MASTER_IMPORT UI ON ( UM.USER_ID = UI.USER_ID) -- 既存レコードの更新 WHEN MATCHED THEN UPDATE SET USER_NAME = USER_MASTER_IMPORT.USER_NAME -- 新規レコードの作成 WHEN NOT MATCHED THEN INSERT ( USER_ID, USER_NAME, NO ,SHOZOKU_NAME) SELECT UI.USER_ID, UI.USER_NAME, UI.NO, SH.SHOZOKU_NAME FROM USER_MASTER_IMPORT UI LEFT JOIN SHOZOKU SH ON(UI.USER_ID = SH.USER_ID)

  • configureでsyntax errorとなる

    さくらインターネットのレンタルサーバー(スタンダードプラン)でWEBサイトを構築しようとtidyのインストールで試行錯誤しています。 OSは FreeBSD 8.1-RELEASE-p13 amd64 です。 http://www.ebisawa.co.jp/wiki/index.php?WP%2FHTMLTidy#m55edd07 のサイトを参考にtidyのインストールに挑戦していたのですが、 # wget http://tidy.sourceforge.net/src/tidy_src.tgz # tar -xzvf tidy_src.tgz # cd tidy # sh ./build/gnuauto/setup.sh # ./configure # make # make install のconfigureをしようとしたら、syntax errorが出てきて先に進むことができません。 % ./configure % ./configure: 2410: Syntax error: word unexpected (expecting ")") とのエラーが出てきてしまいます。 FreeBSDに詳しくないので原因がなかなか特定できません。 よろしくお願いいたします。

  • SQLServer MERGEコマンドについて

    初めて投稿させていただきます。 まず、環境に関する情報です。 【環境】 DB:SQLServer2008R2 開発環境:VisualStudio2008 Professional Edition 開発言語:C# C#のプログラムでSQL実行を行うプログラムを作成し、MERGEコマンドを含むSQL文を発行しようとしているのですが、以下のエラーとなってしまいます。 ▼エラー内容 System.Data.SqlClient.SqlException: ストアド プロシージャ '' が見つかりませんでした。 書いたコードはこんな感じです。 ▼ソース内容 public bool MergeData(String strSQL) { try { base.sqlDataAdapter = null; base.OpenConnection(); StringBuilder sqlMerge = new StringBuilder(); //------------------------------------------------------------ // マージ用SQL //------------------------------------------------------------ sqlMerge.Append("MERGE INTO [テーブルA] as T USING [テーブルAtemp] as T2"); sqlMerge.Append(" ON (T.カラム1 = T2.カラム1 and T.カラム2 = T2.カラム2)"); sqlMerge.Append(" WHEN MATCHED THEN"); sqlMerge.Append(" UPDATE SET xxxxx"); ※内容は割愛します sqlMerge.Append(" WHEN not MATCHED THEN"); sqlMerge.Append(" INSERT xxxxx"); ※内容は割愛します //------------------------------------------------------------ // トランザクション開始 //------------------------------------------------------------ base.BeginTransaction(); //------------------------------------------------------------ // 登録用SQL設定 //------------------------------------------------------------ base.SetCommand(sqlMerge.ToString()); //------------------------------------------------------------ // 登録実行 //------------------------------------------------------------ int retValue = base.ExecuteNonQuery(); 「sqlMerge.ToString()」の内容をそのままSQLServerManagementStudioで実行すると正常に処理できることは確認できています。 なぜ上記エラーが出てしまうのか?が分かりません。 お分かりの方がいらっしゃいましたらご教授お願いします。

  • ProCでコンパイルエラーが出ます

    Linux、Oracle8i、ProCで開発しています。 Linux、C、Procに関しては初心者です。 サンプルをもらったのですが、その提供者が夏休みで 連絡が取れないため、ここで質問させていただきます。 コンパイルを行うと、 EXEC SQL INCLUDE "TEST_TABLE.h"; の部分で unable to open include file というエラーが出ました。 どのような原因が考えられるでしょうか? makefileは以下のとおりです。 TEST_TABLE.h は /Test/src/COMMON/ にあります。 include $(ORACLE_HOME)/precomp/lib/env_precomp.mk TARGET =Test SRCS =$(TARGET).pc OBJS =$(TARGET).o BIN =/Test/bin INCL =/Test/src/COMMON/ CDIR =/Test/src/COMMON/ #COBJS =$(CDIR)sub1.o $(CDIR)sub2.o all : $(TARGET) @ echo 'Build complete' mv $(TARGET) $(BIN)/. $(TARGET) : $(OBJS) $(CC) -o $(TARGET) $(OBJS) $(LDPATHFLAG)$(LIBHOME) $(STATICPROLDLIBS) $(COBJS) $(OBJS) : $(SRCS) $(PROC) $(PROCPLSFLAGS) iname=$* $(CC) $(CFLAGS) -I$(INCL) -c $*.c clean : - rm -f $(TARGET) core よろしくお願いします。

  • Tomcatのインストール

    Tomcatを以下からダウンロードしました。 ****://www.eng.lsu.edu/mirrors/apache/tomcat/tomcat-5/v5.5.17/src/apache-tomcat-5.5.17-src.tar.gz ファイル名にsrcがあるので、コンパイルが必要なソース群だと思います。 展開します。 tar xvzf apache-tomcat-5.5.17-src.tar.gz 確認します。 cd apache-tomcat-5.5.17-src ls build/ build.xml connectors/ container/ jasper/ servletapi/ ここでbuild.xmlを実行するとエラーになりました。 僕がダウンロードしたものはコンパイルする必要がなかったのですか? apache-tomcat-5.5.17-src.tar.gzのインストール方法を教えてください。

  • PCC-S-02201エラーの対処を教えてください!

    初心者です。 Oracle8、 Pro*Cで開発をしているのですが、下記のSQLでコンパイルエラーが出てしまいます。 SQLPlus上で数値を直値にしては問題なく動くのですが、うまくいきません。 何が問題なのでしょうか? やろうとしていることは、 m件(iRecordFm)からn件(iMax)までのデータを取得したいのです。 その際にいくつかWhere条件も加えたいのです。 どうぞよろしくお願いいたします。 --【エラー】----------------------------------------------- PCC-S-02201, 記号"order"が見つかりました。 次のうちの1つが入るとき: ) * + - / | union, at, connect, and, group, having, intersect, minus, or, start, with, day, hour, minute, month, second, year, 記号")" は継続のために"order"に代わりました。 --【コード】----------------------------------------------- /*ProC(仮) 実際は.cからパラメタで来ます。*/ char cCcd[] = "01"; char cAssignMon[] ="07"; char cToday[] = "2005/06/23"; int iRecordFm = 20; int iMax = 22; /*エラーが出るSQL*/ EXEC SQL DECLARE c_fireList CURSOR FOR SELECT TW.* FROM (SELECT aaa, bbb, ccc, ddd, eee, ROWNUM AS LINENO FROM mmm where bbb = :cCcd and TO_CHAR(eee,'MM') = :cAssignMon and eee >= TO_DATE(:cToday,'YYYY/MM/DD') order by eee, aaa) TW WHERE TW.LINENO >= :iRecordFm and TW.LINENO <= :iMax; -----------------------------------------------------------

  • Proftpdのmod_sql_mysqlオプションつきインストール

    Proftpdのユーザー管理をMySQLで行うために、 proftpd-1.2.10-1.src.rpm から --with mod_sql_mysql つきでインストールしようと しています。 ところが、 [user1@hoge ~]$ rpmbuild -ba rpm/SPECS/proftpd.spec --with mod_sql_mysql collect2: ld はステータス 1 で終了しました make: *** [proftpd] エラー 1 エラー: Bad exit status from /var/tmp/rpm-tmp.42242 (%build) RPM build errors: Bad exit status from /var/tmp/rpm-tmp.42242 (%build) というエラーが出てrpmを作成することができません。 specファイルに何か変更を加えなければならないのでしょうか? ご存知の方いらっしゃいましたらご教示願います。 環境は、 CentOS 4.4 kernel 2.6.9-42.0.10.EL gcc.i386 3.4.6-3.1 rpm-build.i386 4.3.3-18_nonptl

  • MERGE文について

    以下のようなSQL文を作成し、Oracle10gで実行したところ、正常に実行されていたのですが、同一のSQL文をOracle9iで実行したところ、 ORA-00905: キーワードがありません。 とエラーがでてしまいました。 merge文はOracle9iから追加された?ものだったと記憶しているですが、思い違いでしょうか? それともOracle9i、Oracle10gで何か違いがあるのでしょうか? Oracleのバージョンはそれぞれ以下の通りです。 Oracle10g:10.1.0.2.0 Oracle9i:9.0.1.1.1 よろしくお願い致します。 <やりたいこと> A表のa列とb列が、B表のa列とb列と一致したものレコードのみ、B表のc列の内容にA表のc列をアップデートする。(インサートはしない) merge into 表A A using 表B B on (A.a = B.a and A.b = B.b) when matched then update set A.c = B.c /