2

ストアド関数の何が問題になっているのか理解できませんでした。

select batch as bach from test where mfg_code = 'BC-7A1-5' group by batch;

上記のスクリプトを実行すると、期待どおりの行数を取得できます。

ただし、以下の同様のスクリプトでは使用できません。-

DELIMITER $$
DROP FUNCTION IF EXISTS `testdata1970_05`.`listbatch` $$
CREATE FUNCTION `listbatch`(mfgnum VARCHAR(24)) RETURNS VARCHAR(10)

BEGIN
DECLARE bach VARCHAR(10);
SELECT batch into bach FROM test WHERE mfg_code = mfgnum group by batch;
RETURN bach;
END $$

DELIMITER ;  

そしてそれはエラーを返します:

「エラー1172(42000):結果が複数の行で構成されていました」

そして、これが私のクエリです:

select listbatch("BC-7A1-5");
4

1 に答える 1

1

エラー メッセージは、クエリによって複数の行が返されていることを示しており、定義した変数は 1 つの値しか保持できないため、結果セットを単純な変数に格納することはできません。

于 2013-02-21T08:31:31.390 に答える