• ベストアンサー

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型です。

noname#7237
noname#7237

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

  • ベストアンサー
noname#86752
noname#86752
回答No.1

最後にある+1は無理だと思います。 最後の()部分だけ select b_num + 1 from db1 ..... にしたらどうでしょうか。 それと最初の文の where b_num = ((select...))って、OKですか? もしかしたら where b_num in ((select ....))にしないといけないかも知れません。 Pro*Cで開発されているとこことですが、SQLの確認は他でやってからのほうがいいと思います。(もうやっているのかもしれませんが・・・)

noname#7237
質問者

お礼

ありがとうございます。 言われたとおりにしたらできました! つまり、 EXEC SQL SELECT A_DAY FROM DB1 WHERE B_NUM = (SELECT B_NUM +1 FROM DB1 WHERE A_DAY = '20040722'); で通ったのです!! ありがとうございましたーーー!! >それと最初の文の where b_num = ((select...))って、OKですか? は問題ないみたいです。

関連するQ&A

  • 【再投稿】Pro*Cの大文字小文字

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。 どう変かというと・・・ (1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = \'1\'; (2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = \'1\'; (3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = \'1\'; 元々(1)のように記述してありました。 それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。 しかし(2)も今日突然データがあるのにNotFoundになり、(3)のようにAbcにかえたところ、selectできるようになりました。 大文字小文字は関係ないと誰に聞いても言われるのですが、実際今は(3)でないと同じデータでもselectできません。 今はこれでいいですが、この調子で行くときっといつか(3)でもselectできなくなり、aBcとかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

  • Pro*Cの大文字小文字

    こんにちは。 現在Oracle9 Pro*Cで開発をしているのですが、下記のSQLが変です。 どう変かというと・・・ (1)EXEC SQL SELECT ABC FROM DB1 WHERE A_NUM = '1'; (2)EXEC SQL SELECT abc FROM DB1 WHERE A_NUM = '1'; (3)EXEC SQL SELECT Abc FROM DB1 WHERE A_NUM = '1'; 元々(1)のように記述してありました。 それがある日突然データがあるのにNotFoundになって、ためしに項目名ABCをabcに変えたところ、なぜだかselectできるようになりました。 しかし(2)も今日突然データがあるのにNotFoundになり、(3)のようにAbcにかえたところ、selectできるようになりました。 大文字小文字は関係ないと誰に聞いても言われるのですが、実際今は(3)でないと同じデータでもselectできません。 今はこれでいいですが、この調子で行くときっといつか(3)でもselectできなくなり、aBcとかにしなくてはいけない日が来ると思うのです。 なんででしょう? 環境の問題とかでしょうか? 何か分かる方がいたら、よろしくお願いします。

  • 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; -----------------------------------------------------------

  • Pro*で副問い合わせができない

    こんにちは、現在Oracle9 Pro*C を使った開発をしているのですが、下記のSQLで 副問い合わせをしているのですが、コンパイルエラーが 出てしまいます。エラー内容は 「PCC-S-02201, 記号"SEISAN_YMD"が見つかりました。」 と表示されます。SQLPlus上では問題なく検索 されるのですが、C上だとうまくいきません。 なにか足りないのでしょうか? EXEC SQL DECLARE cur4 CURSOR FOR SELECT DISTINCT b.KEIKAKU_SAKUTEI_KBN, a.SEISAN_YMD, (SELECT SEISAN_YMD FROM VIWDKJSEIS ) from VIWDKJSEIS a, TBLDKJSTNR b,TBLDKJSIRB c where b.KEIKAKU_SAKUTEI_KBN = c.KEIKAKU_SAKUTEI_KBN AND a.SEISAN_YMD = b.SAGYO_YMD AND b.SAGYO_YMD = c.SAGYO_YMD AND TO_CHAR(a.SEISAN_YMD,'YYYY/DD') = :db_senko_taisyo_ym_m;

  • PCC-S-02322 未定義の識別子・・・

    こんばんは、Pro*C初心者です。 プリコンパイルを行った際に下記エラーが表示されてしまいます。 *-----------------------------------------------------------------------* PCC-S-02322,未定義の識別子が見つかりました。 セマンティック・エラーです。(行252、列23、ファイルC:\HDataSYU\test.pc): EXEC SQL CONNECT :username IDENTIFIED BY :password USING :db_string; ...........................................1 *-----------------------------------------------------------------------* ちなみに下記はプログラムの一部です。 char username[32]; char password[32]; char db_string[32]; memset(username, 0, sizeof(username)); memset(password, 0, sizeof(password)); memset(db_string, 0, sizeof(db_string)); strcpy(username, USERNAME); strcpy(password, PASSWORD); strcpy(db_string, DB_STRING); EXEC SQL CONNECT :username IDENTIFIED BY :password USING :db_string; 原因など些細な事で構いませんので、お分かりになる方ご教示下さい。 お願いします。 【環境】 os:Windows oracleのバージョン:oracle9.2.0

  • Pro*C コンパイルエラー

    procコマンドにてコンパイルを行った時に、下記のエラーが出てしまいます。何故でしょうか? 原因の分かる方、誰か教えて下さい。 Pro*C/C++: Release 9.2.0.1.0 - Production on 土 Apr 16 15:19:06 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 行0、列0でエラーが発生しました。ファイルtest001.pc PCC-F-02102, Cプリプロセッサ処理を実行中に致命エラーが発生しました。 行1661、列2でエラーが発生しました。ファイルtest001.pc 1661 } 1661 .1 1661 PCC-S-02014, 記号"<eof>"が見つかりました。 次のうちの1つが入るとき: ; { } , = : ( ) [ ] * ? | & < > + - / % ~ ! . # @ ^ *= /= %= += -= <<= >>= &&= ||= ^= ~= := | & == != <= >= << >> ++ -- -> ... .. <> ** => an identifier, a string, a numeric constant, a sql string, misc. punctuation, newline, define, elif, else, endif, error, if, ifdef, ifndef, include, line, pragma, undef, exec, sql, begin, end, var, type, oracle, an immediate preprocessor command, a C token, exec sql, exec sql include, exec sql var, exec sql begin, exec sql end, end-exec, exec sql type, exec oracle, exec oracle else, exec oracle endif, exec oracle begin, a sql hint, create, function, package, procedure, trigger, or, replace, a C++ token,

  • Pro*Cの構文エラー

    コンパイル時に、下記のエラーが出て困っています。 誰か教えて下さい。 Pro*C/C++: Release 9.2.0.1.0 - Production on 土 Apr 16 15:19:06 2005 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. 行0、列0でエラーが発生しました。ファイルtest001.pc PCC-F-02102, Cプリプロセッサ処理を実行中に致命エラーが発生しました。 行1661、列2でエラーが発生しました。ファイルtest001.pc 1661 } 1661 .1 1661 PCC-S-02014, 記号"<eof>"が見つかりました。 次のうちの1つが入るとき: ; { } , = : ( ) [ ] * ? | & < > + - / % ~ ! . # @ ^ *= /= %= += -= <<= >>= &&= ||= ^= ~= := | & == != <= >= << >> ++ -- -> ... .. <> ** => an identifier, a string, a numeric constant, a sql string, misc. punctuation, newline, define, elif, else, endif, error, if, ifdef, ifndef, include, line, pragma, undef, exec, sql, begin, end, var, type, oracle, an immediate preprocessor command, a C token, exec sql, exec sql include, exec sql var, exec sql begin, exec sql end, end-exec, exec sql type, exec oracle, exec oracle else, exec oracle endif, exec oracle begin, a sql hint, create, function, package, procedure, trigger, or, replace, a C++ token,

  • 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

  • ACCESSのSQLの書き方

    ACCESSでのSQL文の書き方を教えてください。 テーブルtbl_Aとテーブルtbl_Bがあり, tbl_Aで得られた数値とtbl_Bで得られた数値を加えたものを結果として表示します。 どう書けばよろしいのでしょうか。どうしてもエラーになってしまいます。 イメージとしてはこんな感じです。 select (select ~~ from tbl_A where ~~)+(select ~~ from tbl_B where ~~) (もしoracleならば,「from dual」というのを最後に付けるんですが。)

  • シェルスクリプトでオラクルのエラーメッセージを取得するには

    シェルスクリプト上でsqlplusを起動し、さらにSQLの実行結果(エラーメッセージ)を取得するにはどのようにシェルをどのように記述すればよいでしょうか? ---------------------------------------- sqlplus scott/tiger@hoge SQL>select * from dep; * 1行でエラーが発生しました。 ORA-00942: 表またはビューが存在しません。 ---------------------------------------- 上記のようなコマンド実行とエラーメッセージの取得を行いたいのですが、シェルについては超初心者のためよく分かりません。 実行環境は以下の通りですが、ご存知の方教えて頂けないでしょうか。よろしくお願いします。 OS:Red Hat Linux 8.0 DB:Oracle8.1.7

専門家に質問してみよう