0

かなり単純な質問ですが、私はもっと複雑な質問に対する答えしか見つけることができません。

私は保存されたプロシージャに取り組んでおり、現在REPEATループ内にいます。返される1列の値を取得するには、ループ内で次のクエリを実行する必要があります(1つのレコードのみが返されます)。これは、ループの後半で使用するためにvarとして保存する必要があります。

写真からphoto_idを選択します。photo_idDESCLIMIT1で注文します。

保存されたプロシージャで後で使用するために、これを「last_photo_id」に設定するにはどうすればよいですか?

4

3 に答える 3

1

あなたはこのようなことをすることができます:

SELECT @varname := photo_id
FROM photos
ORDER BY photo_id DESC
LIMIT 1;

つまり、ループ内以外にやりたいことを行う方法がないと確信している場合です。SQLは、セットベースのソリューションに使用する場合に最適に機能します。

于 2012-03-13T14:18:30.640 に答える
0

あなたは関数を使うことができますだから例えば

  SET i_camera_count = get_camera_count(i_photo_camera_data_id);

そして、このような関数を作成します。

DELIMITER $$

DROP FUNCTION IF EXISTS `get_camera_count` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `get_camera_count`(camera_id_2 INT(10)) RETURNS int(11)
BEGIN
  DECLARE v_return_val INT;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_return_val = -1;


 SELECT x FROM y WHERE camera_id = camera_id_2

  RETURN v_return_val;
END $$

DELIMITER ;
于 2012-03-13T14:13:40.203 に答える
0

これを試して:

 DECLARE total_products INT DEFAULT 0
 SELECT COUNT  INTO total_products
 FROM products 
于 2012-03-13T14:15:30.563 に答える