MySQL,程序不会被调用

时间:2012-04-23 17:38:20

标签: mysql

我正在尝试编写一个程序来查找一类船只的火力。 (火力是枪支的数量*位移立方)

关联:

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

到目前为止我的尝试......

mysql> CREATE PROCEDURE firePower(in className VARCHAR(50), out p int)
-> begin
-> set p = (SELECT numGuns * displacement * displacement * displacement FROM classes
WHERE class = className);
-> end
-> //
Query OK, 0 rows affected (0.35 sec)

mysql> CALL firePower(Iowa, @p)//
ERROR 1054 (42S22): Unknown column 'Iowa' in 'field list'
mysql> SELECT * FROM classes//
+----------------+------+---------+---------+------+--------------+
| class          | type | country | numGuns | bore | displacement |
+----------------+------+---------+---------+------+--------------+
| Bismarck       | bb   | Germany |       8 |   16 |        42000 |
| Iowa           | bb   | USA     |       9 |   16 |        46000 |
| Kongo          | bc   | Japan   |       8 |   14 |        32000 |
| North Carolina | bb   | USA     |       9 |   16 |        37000 |
| Renown         | bc   | Britain |       6 |   15 |        32000 |
| Revenge        | bb   | Britain |       8 |   15 |        29000 |
| Tennessee      | bb   | USA     |      12 |   14 |        32000 |
| Yamato         | bb   | Japan   |       9 |   18 |        65000 |
+----------------+------+---------+---------+------+--------------+
8 rows in set (0.00 sec)

mysql> CALL firePower(Bismarck, @p)//
ERROR 1054 (42S22): Unknown column 'Bismarck' in 'field list'
mysql> 

我的问题是我现在似乎无法调用我的手术......?

1 个答案:

答案 0 :(得分:1)

由于您未在调用中引用Bismarck,因此该过程将其解释为列名。在它周围添加单引号将与实际字符串匹配。

mysql> CALL firePower('Bismarck', @p)//
Query OK, 0 rows affected, 1 warning (0.00 sec)