sql >> Database >  >> RDS >> Mysql

Gebruik een opgeslagen procedureparameter voor eenheidsparameter van DATE_SUB

Wat u probeert te doen is niet mogelijk in een opgeslagen procedure, met of zonder een voorbereide verklaring.

Je zou zoiets als dit kunnen doen:

DELIMITER $$

DROP PROCEDURE IF EXISTS test_proc $$
CREATE PROCEDURE  test_proc(param1 varchar(20))
BEGIN

  CASE UPPER(param1)
    WHEN 'MICROSECOND' THEN select DATE_SUB(now(), INTERVAL 1 MICROSECOND); 
    WHEN 'SECOND' THEN select DATE_SUB(now(), INTERVAL 1 SECOND);
    WHEN 'MINUTE' THEN select DATE_SUB(now(), INTERVAL 1 MINUTE);
    WHEN 'HOUR' THEN select DATE_SUB(now(), INTERVAL 1 HOUR);
    WHEN 'DAY' THEN select DATE_SUB(now(), INTERVAL 1 DAY);
    WHEN 'WEEK' THEN select DATE_SUB(now(), INTERVAL 1 WEEK);
    WHEN 'MONTH' THEN select DATE_SUB(now(), INTERVAL 1 MONTH);
    WHEN 'QUARTER' THEN select DATE_SUB(now(), INTERVAL 1 QUARTER);
    WHEN 'YEAR' THEN select DATE_SUB(now(), INTERVAL 1 YEAR);
    ELSE select 'UNEXPECTED UNIT';
  END CASE;

END $$

DELIMITER ;



  1. Vraag en aanbod afstemmen - Oplossingen, deel 3

  2. Is het mogelijk om een ​​enkele query in orakel te beëindigen zonder de sessie te beëindigen?

  3. Vereenvoudiging van het testen van eenheden Belangrijkste opgeslagen procedure die ook een hulpprogramma-procedure aanroept

  4. LEN-functie zonder volgspaties in SQL Server