ホーム › フォーラム › A5:SQL Mk-2掲示板 › syntax error at or near “LIMIT”
- このトピックには5件の返信、2人の参加者があり、最後ににより6年、 6ヶ月前に更新されました。 
- 
		投稿者投稿
- 
		
			
				
nisshy ゲストいつも便利に使わせていただいております。 
 心底感謝しております。以前から、 PostgreSQL 直接接続で 「syntax error at or near “LIMIT”」というエラーが時折表示されて、どういう条件の時に表示されるか、わからなかったのですが、今回、エラーになるパターンの SQL と、正常なパターンの SQL の違いに気づきましたので、お知らせします。 利用バージョンは 
 2.13.3 x64
 PostgreSQL 9.5.4, compiled by Visual C++ build 1800, 32-bit■ NG パターン 1234select -- テスト1limit 1;■ OK パターン 
 — テスト1234select1limit 1;以上です。 品質向上のためのお役に立てると良いのですが。 これからもがんばってくださいませ。 
 応援しています。nisshy ゲストcode タグを使ったら、変になってしまいました。。 
 code タグなしで書くと、以下の通りです。■ NG パターン 
 select — テスト
 1
 limit 1
 ;■ OK パターン 
 — テスト
 select
 1
 limit 1
 ;要は、「– テスト」というコメントの置き場所が影響しているようです。 kara ゲストlimit句はコメント位置で回避可能のようですが 
 fetch first row only
 でも同様のsyntax errorが発生し、こちらはコメント有無や位置を変えても回避できません。ご確認頂けますと幸いです。 松原正和 キーマスターnisshyさん、karaさんこんにちは。 
 
 はい、現象を確認しました。MySQLで limit 句が正しく処理できない不具合を Version 2.14.2 beta 1 及び、Version 2.15.0 beta 1で修正しました。
 
 オプションダイアログで「結果セット最大行数」(デフォルト 10000)が指定されていると、内部的にlimit句が追加されて、二重に追加されたlimit句がエラーになっているようでした。A5:SQL Mk-2では、limit句などが指定されていると、「結果セット最大行数」のオプション値を無視していたのですが、limit句が指定されているか調べるためにSQLをパースする処理で1行コメントの解析に失敗していたようです。
 
 karaさんの 「fetch first row only」についてですが、これは IBM Db2の構文だと思うのですが、あっていますでしょうか?Version 2.15.0 beta 1などでも発生しますでしょうか?。kara ゲスト松原さん ご確認ありがとうございます。 
 fetch構文は以前db2用でしたが現在では標準SQL構文の認識です。ORACLE 12c以降、Postgresでもサポートされています。 
 https://www.oracle.com/technetwork/jp/database/articles/tsushima/tsushima-hakushi-37-2202125-ja.html
 https://www.postgresql.jp/document/9.0/html/sql-select.html#SQL-LIMIT事象はPostgresにて確認しておりました。 
 設定で結果セット最大行を0にすることで回避出来ること確認できました。ORACLEでは 
 ORA-00933:SQLコマンドが正しく終了されていません。
 となります。
 これはサーバーバージョンの問題かもしれません。※Version 2.15.0 beta 1で確認しました 一応現在の開発ではPostgresでfetch構文を使いたかったので、ご教示頂いた回避法で問題ありません。 
 (実装は出来ていたがa5m2で検証できなくて困っていた)松原正和 キーマスターkaraさんこんにちは。 
 
 Version 2.15.0 beta 2以降で、FETCH FIRST n ROWS ONLYに対応してみました。ご確認ください。
- 
		投稿者投稿
