ストアドプロシージャに関連する質問があります。私はエージェントという名前のフィールドを持つアカウントと呼ばれるテーブルを持っています。私はagent_structureと呼ばれるテーブルには、この上のSQLを挿入した場合MySQL:SELECTとFROMでストアドプロシージャを使用
-- First SQL --
SELECT account.agent
FROM account
GROUP BY account.agent
HAVING account.agent > 0
が、私は単純に、このようにSQLを使用して別のテーブル(例えば顧客)と、このテーブルに参加できます:
私はこのような単純なSQLを持っています-- Second SQL --
SELECT agent_structure.agent,
customer.name,
customer.age,
customer.country
FROM agent_structure
INNER JOIN customer ON agent_structure.agent = customer.id
問題は、1つのフィールドを保存するためだけに別のテーブルを追加したくないということです。だから、私はストアドプロシージャを使用しようとします。だから、私はこのような手順に最初にSQLを置く:
-- FIRST SQL put into Procedure --
CREATE PROCEDURE agent_structure()
SELECT account.agent
FROM account
GROUP BY account.agent
HAVING account.agent > 0
は、これは私が書くとき以来、非常によく見えます「CALLのagent_structure();」、SQL出力に私がしたい単一のフィールドを。しかし、私は2番目のSQLのようにこの結果を使用する方法を知らない。私はプロシージャにパラメータを与えた後、このダミー方法を試しても動作しません:
-- Second SQL but use stored procedure --
CALL agent_structure(@a);
SELECT @a,
customer.name,
customer.age,
customer.country
FROM @a
INNER JOIN customer ON @a.agent = customer.id
目的は別のスクリプトにスクリプトを使用するようなものです。私は実際のスクリプトがより大きく、複数のレイヤーを持っているので、最初のスクリプトを2番目のスクリプトに直接入れたくありません。誰でも私にこの解決策を教えてもらえますか?
それは間違っています。 #1064 - SQL構文に誤りがあります。 'FROM @a ...'でエラーが発生しました。 – Tan
@Tan - ストアドプロシージャではなくビューを使用してみてください。 [Here](https://dev.mysql.com/doc/refman/5.7/en/create-view.html)より多くの情報をご覧いただけます。ビュー – kastriotcunaku
これはうまくいきました。私は2つの質問があります: 1)スクリプト内でビューを持つビューを作成することは可能ですか? 2)プロシージャとビューの使用上の違いは何ですか? – Tan