Web ベースのアプリケーション用にいくつかの MySQL プロシージャを作成していますが、引数の型チェックがまったくないことに驚かされます。
たとえば、次の場合:
CREATE PROCEDURE foo(n CHAR(4))
好きなように呼び出すことができます。それを受け入れて、最初の 4 文字だけを取ります。しかし、私がこのようなことをしたい場合:
use base;
DELIMITER $$
DROP PROCEDURE IF EXISTS open $$
CREATE PROCEDURE open(n INT)
BEGIN
SELECT * FROM prod_charts LIMIT n;
END $$
DELIMITER ;
int 以外のパラメーターを指定して呼び出すと、クラッシュするだけです。また、フィードバックはありません。php から呼び出しても何も得られず、phpMyAdmin で試してみると、ホーム ページに送り返されます。
だから私の質問は:どうすれば少し安全にできますか?これらの手順で変数の型を確認する方法はありますか?