2016-09-13 15 views
1

私はMySQLクエリを実行し、すべての結果セットを処理します。 MySQL 5.7のドキュメントによると、行う方法はSELECTを使用することです...手順 stored_procedure_name(parameters)。私は何の問題もなく何もしたくないストアドプロシージャを作成しました。私は、SELECT ... PROCEDUREクエリでそれを使用して、この構文エラーました:なぜSELECT..PROCEDUREはMySQLの構文エラーですか?

ComposeStatement(識別子)をこの位置(ComposeStatementは私のストアドプロシージャの名前です)

で有効ではありません。適切な数のパラメータがあることを確認し、適切なタイプのものであることを確認しました。 異なるプロシージャを使用すると、同じエラーが発生します(名前が明らかに変更されています)。

ANALYZEというプロシージャを使用して、この構文の例を示しています(他の投稿からはわかりましたが、特にANALYZEを特に気にしません)。私がこの例を試したとき、私は識別子としてANALYZEを使って同じエラーを取得します。私が得ているエラーは、多くの以前の投稿が適用されない理由である手順自体ではない です。

提案がありますか? SELECT..PROCEDURE構造は、正確に のように聞こえます。

+4

あなたが話していることを理解できません。コードを表示する。ドキュメント内の何かを参照している場合は、ドキュメントページへのリンクを付けてください。 – Barmar

+0

@Barmar https://dev.mysql.com/doc/refman/5.7/en/select.htmlとhttps://dev.mysql.com/doc/refman/5.7/en/procedure-analyse.html – hjpotter92

+0

ドキュメンテーション?私はMySQLがストアドプロシージャの結果からSELECTをサポートすることを知らなかった。 – Uueerdo

答えて

3

MySQLの機能@LarryGriffithの参照は、ストアドプロシージャとは関係ありません。それは、この非推奨の機能に関連しています

https://dev.mysql.com/doc/refman/5.7/en/procedure-analyse.html

SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000); 

PROCEDUREクエリ改質剤の使用は、クエリの結果セットにフィルタ機能を置くようなものです。これは、シェルでのパイプラインに類似します:

ls | grep myfile 

事は、あなたがあなたがCREATE PROCEDUREで書くことができるタイプのストアドプロシージャではありません(例ではANALYSE())を使用し、「手順」です。

フィルタリング機能をC++でコーディングし、MySQLソースでコンパイルする必要があります。

ANALYZE()の例はもともとは、独自のクエリフィルタを開発したい場合に開発者が従うことができる概念の例または例です。しかし、実際には独自のクエリフィルタを作成した人は誰も聞いたことがありません。

昨年、それはあなたがクエリ結果をフィルターに投稿する必要がある場合はSELECT ... PROCEDURE ANALYZE()機能はMySQLの8 http://www.tocker.ca/2015/06/29/plan-to-deprecate-procedure-analyse.html

で廃止されることを意図していたことが発表された、それは、Pythonまたは任意に(スクリプトを記述するためにはるかに簡単ですあなたの好きな言語です)は、クエリの結果から生データを取り出し、必要な処理を行います。

+0

すべての応答ありがとう。 hjpotterはドキュメンテーションへのリンクを親切に提供しました。私は考えていた(明らかに間違って)のインデックス –

+0

申し訳ありませんが、私は誤ってリターンを押して、私の前のコメントを閉じた –

+0

そのRETUNキーを解雇しました。そのために残念。再度、すべての回答に感謝します。 hjpotterはドキュメンテーションへのリンクを親切に提供しました。私は(明らかに間違って)ドキュメンテーション索引が私が参照していたコードを見つけたと思っていました。 Bill Karwinのコメントに続いて、それは –