0

あるクラスの船の火力を見つけるための手順を書こうとしています。(火力は銃の数*変位の3乗です)

関係:

Classes(class, type, country, numGuns, bore, displacement)

私がこれまでに試したこと...

CREATE PRODCEDURE firePower(in className VARCHAR(50), out p int)
-> begin
-> set p = (SELECT numGuns FROM classes WHERE class = className) * (SELECT displacement
FROM classes WHERE class = className)* (SELECT displacement FROM classes WHERE class
className)
-> * (SELECT displacement FROM classes WHERE class = className)
-> )
-> end;
-> //
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'PRODCEDURE
firePower(in className VARCHAR(50), out p int)
begin
set p = (SELECT ' at line 1

私はこれがひどい質問であることを知っています。正しく動作させるためだけにパフォーマンスを求めているわけではありません。

4

2 に答える 2

1

私が目立つ最初の問題は、「手順」のつづりを間違えたことです。

CREATE PRODCEDURE ...

する必要があります

CREATE PROCEDURE ...
于 2012-04-23T17:10:54.747 に答える
0

答えではありませんが、コメントでは機能しません:

なぜあなたはそれらすべての副選択をしているのですか?同じwhere句を使用して同じテーブルから異なるフィールドをフェッチしている場合は、次のようにするだけです。

SELECT numGuns * displacement * displacement * displacement
FROM classes
WHERE class = className
于 2012-04-23T17:19:32.550 に答える